jmeter非GUI分布式运行

jmeter命令行运行但是是单节点下的, jmeter底层用java开发,耗内存、cpu,如果项目要求大并发去压测服务端的话,jmeter单节点难以完成大并发的请求,这时就需要对jmeter进行分布式测试:

1、分布式原理

master机器------->slave机器-------> 被压测系统

这里的 slave机器可以有多个,只要配置即可

处理过程:

(1)master启动以后,会拷贝本地的jmx文件分发到远程的slave机器上;

(2)slave机器拿到脚本以后启动命令行模式去执行脚本,对于每台slave机器拿到的脚本都是一样的,所以如果jmx脚本为50个线程跑3分钟,那么实际并发就是50*执行机个数(如果是3个执行机器的话)=150个线程并发跑3分钟;

(3)执行时,slave会把执行获得的数据结果传给master机器,master机器会收集所有slave机器的信息并汇总,这样master机器上就存在一份所有slave机器汇总的数据结果

2、相关配置

slave机器上,需要设置2个点:

(1)jmeter.properties文件中 server.rmi.ssl.disable 属性改为true

(2)jmeter.properties文件中 ,server_port端口号为机器未被占用的端口号,一般默认为1099(一般都不修改,如果有被占用,可以修改),remote_hosts为127.0.0.1不修改

在master机器上配置:

(1)jmeter.properties文件中 server.rmi.ssl.disable 属性改为true

(2)jmeter.properties文件中 ,修改remote_hosts,配置为slave机器,注意到由于master机器作为调度机本身会有一定的性能消耗所以我们配置远程执行机的时候并没有把master机器配置进去,只配置了2台执行机。ip:端口

(PS:其实也可以把 master机器也配置上去了,这样master机器也可以作为slave,master机器如果不作为 salve,那就不配置)

3、在所有slave机器上,启动 server

    在 apache-jmeter-5.2.1/bin 目录下执行, ./jmeter-server

    启动 server成功的话,可以查到进程:

   

[mispauto@vm0080 ~]$ ps -ef|grep jmeter

mispauto 9966 31473 0 15:21 pts/2 00:00:00 /bin/sh ./jmeter-server
mispauto 9968 9966 0 15:21 pts/2 00:00:00 /bin/sh ./jmeter -Dserver_port=1099 -s -j jmeter-server.log
mispauto 9989 9968 2 15:21 pts/2 00:00:01 /home/mispauto/usr/local/jdk1.8.0_131/bin/java -server -XX:+HeapDumpOnOutOfMemoryError -Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m -XX:+UseG1GC -XX
:MaxGCPauseMillis=100 -XX:G1ReservePercent=20 -Djava.security.egd=file:/dev/urandom -Duser.language=en -Duser.region=EN -jar ./ApacheJMeter.jar -Dserver_port=1099 -s -j jmeter-server.log

   

4、在master机器中执行脚本

/home/mispauto/usr/apache-jmeter-5.2.1/bin/jmeter -n -t /ulic/mysql_project/emisp_login_no.jmx -r -l /ulic/mysql_project/result/result_debug.jtl

-r就是指的 远程运行

如果是有参数配置:用 -G

/home/mispauto/usr/apache-jmeter-5.2.1/bin/jmeter -n -r -t emisp_login.jmx -Gthread=1 -Gloopcount=-1 -Gduration=60 -l /ulic/mysql_project/result/result_debug.jtl

ps:特别注意:

(1) master 机器和slave机器上的 jmeter部署目录,保持一致

(2) master机器上的执行脚本有参数配置文件,比如 csv等,则应该,在slave机器对应的目录上都copy放置一份

(3) 在master执行脚本,尽量都写成 绝对路径方式,脚本名称以及报告路径

参考查看:https://www.cnblogs.com/waitingzxy/p/11393049.html  https://www.cnblogs.com/miaomiaokaixin/p/6116927.html

猜你喜欢

转载自www.cnblogs.com/xiaofeng91/p/13203031.html
今日推荐