机器分布:
- 1 master 2 slave
修改内容:
-
修改jmeter-server文件(slave机器):
- 修改/添加如下代码:RMI_HOST_DEF=-Djava.rmi.server.hostname=**** (****为每台server自己的ip)
- 修改jmeter.properties文件(master机器)
- jmeterengine.nongui.port=0 (大概1038行,修改/添加)
- 启动slave机器:
- 启动命令:./jmeter-server
- 成功将回显:
- (Created remote object: UnicastServerRef [liveRef: [endpoint:[xxxx:12989](local),objID:[-2a48d839:1633e9e77f3:-7fff, -6740358428425422313]]])
- 启动master机器:
- 指定slave机器的方式:
- (1)运行命令,指定slave ip的方式,启动时-R指定slave ip,逗号分割;
- 启动命令:./jmeter -n -t ws_test.jmx -R ***,*** -l test.jtl -e -o /apache-jmeter-3.2/test/report/
- (2)配置文件指定slave ip的方式,文件指定修改master机器的jmeter.properties文件中,指定执行机器remote_hosts=ip:port,ip1:port1,slave的port可以到slave机器的jmeter-server文件查看SERVER_PORT
- 启动命令:./jmeter -n -t ws_test.jmx -r -l test.jtl -e -o /apache-jmeter-3.2/test/report/
- (1)运行命令,指定slave ip的方式,启动时-R指定slave ip,逗号分割;
- 成功将回显:
- 指定slave机器的方式:
分布式执行原理:
- Jmeter分布式测试时,选择其中一台作为调度机(master),其它机器做为执行机(slave);
- 执行时,master会把脚本发送到每台slave上,slave 拿到脚本后就开始执行;
- 举例:如果当前有5台slave机器,预期你要提供500线程的压力,那么jmx文件中只需要设置100线程即可;
- 执行完成后,slave会把结果回传给master,master会收集所有slave的信息并汇总。
注意事项:
- jmeter在slave各个机器上的版本要一致,否则引起报告数据统计可能异常;
- 如果是参数化构建(比如设置csv-data数据),则需要将对应的csv-data数据分发到各个slave机器指定目录,并在jmx文件中指定好统一目录;
-
在non-gui模式下,如果要生成带有分位点信息的报告,执行时增加 -l my.jtl参数;执行完成后,将my.jtl文件放入gui模式下的『聚合报告』中打开(浏览->选择my.jtl文件)即可;
-
注意务必每次导入的时候要清理一下数据(点击"扫帚"),否则,每次的数据会与上次的数据进行叠加处理,引起数据失真;
-