Jmeter分布式测试
使用jmeter做性能测试时,如果并发数过大,单台电脑的配置无法支持时,可以使用jmeter分布式测试。
1. Jmeter分布式执行原理(防火墙均已全部关闭)
Jmeter分布式测试时,选择一台机器作为控制机(Master),其他机器作为执行机(salve)。执行脚本时,master会将脚本发送到salve机器上,salve拿到脚本后就开始执行,salve执行不需要启动GUI。执行完成后,salve会把结果传回给master,master会收集所有salve的信息并汇总。
2. 执行机(salve)配置
(1)在salve机器上安装jmeter并配置号环境变量;
(2)启动bin目录下的:jmeter-server.bat;
(3)启动后,可在cmd命令窗口界面查看到salve机器的ip及端口(也可在jemter.properties文件中查看和修改);
(4)多台salve机器时,重复(1)-(3)步骤。
3. 调度机(master)配置
(1)准备好测试脚本:xx.jmx;
(2)找到jmter的bin目录下jmeter.properties文件,修改该文件配置,如下:
remote_host=ip1:port,ip2:port2
多台salve之间用“,”隔开;
(3)打开jmeter,选择远程启动或者远程全部启动。
4. 远程启动后,master会有各个机器的运行结果
salve自定义端口:
1.salve机器上的jmeter的bin目录下,找到jemter.properties,修改如下两个配置:
server_port=4000
server.rml.localport=4000
(两个端口必须一致,否之远程启动报错)
2.启动salve机器上的jmeter-server.bat,可查看到端口已修改完成。且修改配置文件后,均需重新启动jmeter-server.bat
调度机(master)执行测试脚本,会将测试结果汇总到master,但是你会发现监听器【查看结果树】中response响应结果是空的?
答:这是正常现象,如果slave执行请求成功,不会传回请求的响应结果,所以你在结果树中看到的响应结果是空的。
若是想在maser看到响应结果,修改jmeter.properties配置文件,mode=Standard
我用的jmeter版本是3.1,若是jmeter4.0以后的版本,RMI默认传输机制将使用ssl。ssl需要密钥和证书才能工作,不使用ssl将存在安全漏洞,可能上述操作后远程启动失败
答复:修改jmeter.properties配置文件,使server.rmi.ssl.disable=true。(不论执行机还是控制机均作如上处理)
该问题未验证,仅参考,可在以后验证。
jmeter 非GUI启动命令
jmeter -n -t xxx.jmx -l result.jtl -e -o D:\Jmeter\apache-jmeter-5.0\apache-jmeter-5.0\resultfile
注意: -e -o D:\Jmeter\apache-jmeter-5.0\apache-jmeter-5.0\resultfile 生成测试报告路径(该文件下内容必须是空的)
result.jtl 中间件文件
n表示无GUI运行
t表示要运行的jmx文件
l指生成的文件名称
-e 结束运行,生成报告
-o 报告存放地址
jmeter非GUI远程启动命令
jmeter -n -t xxx.jmx -r -l result.jtl -e -o D:\Jmeter\apache-jmeter-5.0\apache-jmeter-5.0\resultfile
r指远程将所有agent启动