JMeter 多台压力机分布式测试(Windows)

JMeter 多台压力机分布式测试(Windows)

1. 背景

  • 在单台压力机运行时,出现了端口冲突问题,如 JMeter port already in use
  • 压力机机器权限限制,无法修改默认端口配置。
  • 为避免端口冲突且提升压力机的压力能力,考虑使用多台机器(多台JMeter压力机)分布式压测。

2.环境说明

  • Master IP:192.20.10.7

  • Slave1 IP:192.20.10.8

  • Slave2 IP:192.20.10.9

  • JMeter版本均为 5.5

  • Java版本均为 1.8+

  • 网络可互通,防火墙端口放通

    • RMI 注册端口:1099
    • RMI 远程对象端口:50000(默认,可配置)

3. Master 节点配置

3.1 修改 jmeter.propertiesJMETER_HOME/bin/jmeter.properties

ini 复制代码
properties复制# 远程主机列表,逗号分隔
remote_hosts=192.20.10.8,192.20.10.9
​
# 禁用RMI SSL,避免额外复杂度
server.rmi.ssl.disable=true
​
# Master的回调地址,设置为本机可达IP(用于Slave回调)
client.rmi.localhostname=192.20.10.7
​
# 关闭插件联网上报,提升启动速度
jmeter.pluginmanager.report_stats=false

2.2 启动 JMeter GUI

  • 直接运行 jmeter.bat 打开GUI
  • 加载测试脚本(*.jmx
  • 确认脚本和依赖文件已同步到所有Slave节点同路径

3. Slave 节点配置(192.20.10.8 和 192.20.10.9)

3.1 修改各自的 jmeter.propertiesJMETER_HOME/bin/jmeter.properties

Slave1(192.20.10.8):

ini 复制代码
# 远程RMI服务监听端口
server_port=1099
​
# RMI通信本地端口(避免冲突,Slave1用50000)
server.rmi.localport=50000
​
# 禁用RMI SSL
server.rmi.ssl.disable=true
​
# 远程机器回调绑定IP(本机IP)
java.rmi.server.hostname=192.20.10.8
​
# 关闭插件联网上报
jmeter.pluginmanager.report_stats=false

Slave2(192.20.10.9):

ini 复制代码
server_port=1099
server.rmi.localport=50001
server.rmi.ssl.disable=true
java.rmi.server.hostname=192.20.10.9
jmeter.pluginmanager.report_stats=false

3.2 启动Slave服务

在每台Slave机器的 bin 目录,执行:

ini 复制代码
set JVM_ARGS=-Djava.rmi.server.hostname=192.20.10.8 #可选配置
jmeter-server.bat

(Slave2替换IP为 192.20.10.9

看到类似 Using local port: 50002 Created remote object: UnicastServerRef2 [liveRef:XXXX 表示启动成功。

如启动异常,可以打开jmeter-server.log查看日志。

3.2 验证监听端口

netstat -an | findstr 1099

ini 复制代码
  TCP    0.0.0.0:1099           0.0.0.0:0              LISTENING
  TCP    [::]:1099              [::]:0                 LISTENING

netstat -an | findstr 50002

ini 复制代码
  TCP    0.0.0.0:50002          0.0.0.0:0              LISTENING
  TCP    [::]:50002             [::]:0                 LISTENING

4. 测试执行流程

  1. 确保Master和所有Slave机器的JMeter和Java版本一致。
  2. 确保测试脚本和依赖文件(如CSV等)在所有Slave路径相同。
  3. 启动所有Slave的 jmeter-server.bat,确保端口监听正常。
  4. 在Master GUI加载脚本。
  5. 点击菜单 Run -> Remote Start 或 Remote Start All,Master向所有Slave发起远程测试。 11.JMeter GUI的日志样例如下:
yaml 复制代码
INFO o.a.j.e.ClientJMeterEngine: Sending properties {}
o.a.j.e.ClientJMeterEngine: sent run command to 
o.a.j.e.DistributedRunner: Remote engines have been started
o.a.j.g.u.JMeterMenuBar: setRunning
o.a.j.g.u.JMeterMenuBar: setRunning

jmeter-server.bat的日志如下,出现如下字段

bash 复制代码
Starting the test on host ...
Finished the test on host ...
  1. Master GUI的 Listener(Summary Report等)会显示所有Slave合并的结果。

5. 其他注意事项

  • 防火墙放通Master和Slave的server_port(1099)、server.rmi.localport端口。
  • Master client.rmi.localhostname必须是Slave可访问的Master IP。
  • 禁用插件联网统计,避免卡顿。
  • 避免使用重型监听器,使用轻量级监听器提升性能。
相关推荐
阿蔹13 小时前
Session与Cookies
selenium·测试
brave and determined20 小时前
工程设计类学习(DAY5):揭秘HALT试验:产品极限测试全解析
测试·hass·产品设计·halt·高低温循环·产品寿命实验·产品质量
0和1的舞者2 天前
GUI自动化测试详解(三):测试框架pytest完全指南
自动化测试·python·测试开发·自动化·pytest·测试
嘿嘿2 天前
charles iOS 配置证书,抓取https请求
http·测试
brave and determined4 天前
工程设计类学习(DAY4):硬件可靠性测试全攻略:标准到实战
人工智能·嵌入式硬件·测试·硬件设计·可靠性测试·嵌入式设计·可靠性方法
AKAMAI4 天前
基准测试:Akamai云上的NVIDIA RTX Pro 6000 Blackwell
人工智能·云计算·测试
大话性能5 天前
8个Python骚操作让代码效率翻倍
测试
0和1的舞者6 天前
《GUI 自动化详解(二):控件、鼠标键盘与菜单列表操作全指南》
开发语言·自动化测试·python·测试开发·自动化·测试
0和1的舞者8 天前
接口自动化(四):logging 日志配置 + Allure 测试报告从安装到使用
测试开发·自动化·接口·接口自动化·测试·知识
0和1的舞者9 天前
接口自动化测试详解(二):requests 请求封装与 Pytest 框架全实战
开发语言·自动化测试·python·测试开发·接口·测试