一、Jmeter分布式执行原理:
1、Jmeter分布式测试时,选择其中一台作为调度机(master),其它机器做为执行机(slave)。
2、执行时,master会把脚本发送到每台slave上,slave 拿到脚本后就开始执行,slave执行时不需要启动GUI,我理解它应该是通过命令行模式执行的。
3、执行完成后,slave会把结果回传给master,master会收集所有slave的信息并汇总。
二.slave执行机的配置:
1:slave机上需安装jmeter
2:添加jmeter的bin目录到path环境变量中
3:检查slave机的防火墙是否打开,需要关闭
1) 重启后生效
开启: chkconfig iptables on
关闭: chkconfig iptables off
2) 即时生效,重启后失效
开启: service iptables start
关闭: service iptables stop
4:启动jmeter-server.bat
slave的ip和端口会在master中配置
5:如果脚本执行中需要参数文件,则将参数文件拷贝到slave机,需与master调度机中的路径一致。然后重启jmeter-server.bat
三,master调度机的配置:
1:脚本
2:找到jmeter.properties文件,添加slave调度机的IP,端口默认(修改端口的情况后边再讲),IP用逗号隔开
remote_hosts=127.0.0.1,192.168.1.2
3:启动jmeter.bat,选择run-remote start或者remote start all
4:这里我选择启动192.168.20.31slave调度机
5:master执行成功
6:slave执行结果:
四,自定义端口
上面其实已经实现了Jmeter的分布式测试,这部分主要介绍下如何自定义slave端口:
1、slave:在slave机的Jmeter的bin目录下,找到jmeter.properties文件,修改如下两个配置项,比如我这里修改为1888:
server_port=1888
server.rmi.localport=1888
2、启动slave机上的jmeter-server.bat,如下图,端口已经修改为:1888
3、master:修改master机器的jmeter.properties文件:
remote_hosts=10.13.223.202:1000,10.13.225.12:1888
4、重启jmeter.bat,如下图,端口已经变了
五:
其它说明:
1、调度机(master)和执行机(slave)最好分开,由于master需要发送信息给slave并且会接收slave回传回来的测试数据,所以mater自身会有消耗,所以建议单独用一台机器作为mater。
2、参数文件:如果使用csv进行参数化,那么需要把参数文件在每台slave上拷一份且路径需要设置成一样的。
3、每台机器上安装的Jmeter版本和插件最好都一致,否则会出一些意外的问题。