jmeter分布式测试
1 简介
1.1 为什么使用分布式
当模拟并发请求较大或者脚本运行时间较长时,压力机会出现卡顿甚至报内存溢出。针对这个情况,JMeter 的解决方案是支持分布式压测,即将大量的模拟并发分配给多台压力机来满足这种大流量的并发请求场景。
1.2 分布式的原理
JMeter 分布式压测时,选择其中一台作为控制机(master),其余的机器做为负载机(slaves),执行时脚本,控制机会把脚本发送到每个负载机上,负载机获取到脚本就执行脚本(负载机只需要启动 jmeter-server.bat 或者 jmeter-server)。执行后,负载机回传执行结果给控制机,控制机进行汇总。
1.3 分布式注意事项
- 系统上的防火墙已关闭或打开了正确的端口
- 所有客户端都在同一子网中
- 确保 JMeter 可以访问服务器
- 确保在所有系统上使用相同版本的 JMeter 和 Java
- 为 RMI 设置了 SSL 或将其禁用
1.4 分布式环境搭建
本次使用 Windows 作为控制机,Linux 作为负载机搭建分布式环境,JMeter 分布式的搭建非常简单,主要步骤如下:
- 修改控制机的 jmeter.properties,remote_hosts 为负载机的 IP 地址,多台机器用英文逗号隔开,端口默认为 1099,如果端口被占用可以自行修改,禁用 SSL(server.rmi.ssl.disable=true)。


- 修改负载机的 jmeter.properties,禁用 SSL(server.rmi.ssl.disable=true)。

- 启动负载机的 jmeter-server ,进到负载机 JMeter 安装目录的 bin 目录下,执行
./jmeter-server -Djava.rmi.server.hostname=192.168.16.83
192.168.16.83 为负载机的 IP 地址,根据自己的实际情况修改。

2.远程执行 JMeter 脚本
2.1 远程启动单个负载机
在控制机打开 JMeter 脚本,点击运行-远程启动,会看到在配置文件 jmeter.properties 配置的 remote_hosts。选择一个 IP 地址点击,此机器上的 JMeter 会执行脚本并返回结果给控制机。

2.2 远程启动所有负载机
点击运行-远程启动所有,所有的负载机都会去执行脚本,并且返回结果给控制机,这样就可以进行分布式压测了。

远程启动负载机时需要注意几点:
- 确保负载机启动了 jmeter-server,没有启动会执行失败
- 没有必要将测试脚本复制到每一台机器,JMeter 控制机会将它发往每一台 JMeter 负载机
- 每一台 JMeter 负载机都执行相同的测试脚本,JMeter 不会在执行期间做负载均衡,每一台负载机都会完整地运行测试脚本
- 如果使用 csv 进行参数化,那么需要把参数文件在每台负载机上拷一份且路径需要设置成一样的
- 分布式测试中,通过远程启动负载机,默认查看结果树中的响应数据为空

浙公网安备 33010602011771号