1.分布式压测原理:
使用Master-Slave模式,用master机控制多台slave负载机,向被测服务器发送请求,从而能够支持几千几万的较大并发。
master机负责测试脚本的分发、启动、停止、从slave收集测试结果,等
2.环境准备
(1)master和所有的slave都安装好相同版本的JDK、JMeter,并配置好环境变量
安装jdk请参考: https://blog.51cto.com/11009785/2376310
安装JMeter参考:https://blog.51cto.com/11009785/2388386
(2)master和slave可以使用windows和linux,但最好都使用linux
(3)master和slave都在同一网段
3.测试步骤
(1)修改slave配置并启动jmeter-server
修改jmeter.properties:
-server_port=1234(自定义端口号,避免被占用)
-server.rmi.localport=1234(跟上面设置的端口号一致)
-server.rmi.ssl.disable=true
修改jmeter-server:
-RMI_HOST_DEF=-Djava.rmi.server.hostname=192.168.0.106(绑定本机IP)
启动slave机上jmeter bin目录下的jmeter-server(jmeter-server.bat for windows),记录ip和port
(2)修改master配置并远程启动slave
修改jmeter.properties:
-server.rmi.ssl.disable=true
-remote_hosts=192.168.0.106:1234(与slave上配置的ip、port对应)
备注:若有多个slave,使用逗号分隔多个ip、port,如remote_hosts=ip1:port1,ip2:port2
在master机上,打开测试脚本,启动-->远程启动slave机,可以启动单个slave或全部启动
可在master上使用聚合报告、查看结果树等监听器实时查看slave机的执行情况
4.注意事项
(1)master统计的结果是所有slave的数据之和
分布式测试总样本数=线程数 x 循环次数 x slave负载机数量
(2)若master和slave无法连接,可能是防火墙的问题,要关闭系统防火墙,如何关闭请查看:
https://blog.51cto.com/11009785/2388623
(3)如果监听器中没有返回运行结果,可能是网络有问题,或者参数文件路径有问题
可查看的日志有:slave机jmeter bin目录下的jmeter-server.log
可参考的文章有:
https://blog.51cto.com/11009785/2388476
https://blog.51cto.com/11009785/2388615
(4)当脚本有依赖文件时,必须要拷贝到slave机相同目录下(建议jmeter bin目录,避免出错)
(5)使用查看结果树查看时,会发现只有请求,没有响应的情况,如下图,是正常的
如有必要,可以设置断言,这样即使看不到响应,也能知道请求成功或失败