JMeter分布式负载测试:如何确保双Slave各跑50线程并验证负载生成
解决方案:让两台JMeter Slave各运行50线程并验证负载生成
一、配置两台Slave各运行50个线程的步骤
首先,你的核心问题是Slave 2没有参与负载生成,先排查环境连通性,再调整线程配置:
1. 确保Master与两台Slave的分布式环境正常
- 检查Master的
jmeter.properties配置:找到remote_hosts项,设置为Slave1_IP:1099,Slave2_IP:1099(默认RMI端口是1099,如果Slave修改过端口,要对应调整)。 - 启动两台Slave的
jmeter-server(Linux下执行./jmeter-server,Windows下双击jmeter-server.bat),确保没有防火墙或安全组阻挡RMI端口的通信。 - 在Master上执行测试前,先验证连通性:运行命令
jmeter -n -t 你的脚本.jmx -r,观察两台Slave的控制台是否有脚本启动的日志输出。
2. 调整线程组配置实现各Slave跑50线程
你的jp@gc - Stepping Thread Group已经设置了用户数为50,这正好符合需求:JMeter分布式测试中,每个Slave会独立执行线程组内配置的线程数。也就是说,只要两台Slave都正常参与,每台会启动50个线程,总线程数就是100,和你测试报告的总数匹配。
如果之前只有Slave1在跑,大概率是Slave2的连通性问题,修正后重新执行测试,就能实现两台各跑50线程的目标。
二、判断Slave是否正在生成负载的方法
1. 系统资源监控
- CPU/内存利用率:用Slave机器的系统工具查看(Linux用
top/htop,Windows用任务管理器),如果Slave在生成负载,CPU利用率会明显高于 idle 状态(比如从4%升到30%+),内存占用也会随线程启动上升。 - 网络流量:查看Slave的网卡发送流量(Linux用
iftop/nload,Windows用任务管理器的“性能”标签),有负载生成时,网卡会持续向目标服务器发送请求,流量会显著增加。
2. JMeter日志验证
- 查看Slave本地的
jmeter.log文件,会有线程启动的日志,比如:Starting thread group... number=1 threads=50
Started thread group number 1
同时会有请求执行的日志(如果日志级别设为INFO及以上),能看到请求的发送和响应记录。
3. Master控制台与报告验证
- Master执行测试时,控制台会输出每个Slave的状态,比如:
Slave1_IP:1099 is ready
Slave2_IP:1099 is ready
测试结束后,查看聚合报告的样本来源,能看到两台Slave各自提交的样本数(如果开启了Sample Variables记录Slave标识的话,还能更清晰区分)。
4. 目标服务器日志验证
- 查看被测试服务器的访问日志,检查是否有来自Slave2的IP请求。如果能看到Slave2的请求记录,说明它正在生成负载。
5. JMeter监控插件
- 在Master的测试计划中添加
jp@gc - PerfMon Metrics Collector插件,配置监控两台Slave的CPU、内存、磁盘IO等指标。测试过程中,插件会实时绘制Slave的资源使用曲线,直观判断是否有负载生成。
内容的提问来源于stack exchange,提问作者Prashant Sah
相关产品推荐
相关产品推荐

