Debian上JMeter分布式测试方法
导读:在 Debian 上进行 JMeter 分布式测试 一 架构与准备 架构说明:使用一台作为主节点 Controller,多台作为从节点 Agent。Controller 负责分发测试计划与汇总结果;每个 Agent 完整执行同一份测试计划...
在 Debian 上进行 JMeter 分布式测试
一 架构与准备
- 架构说明:使用一台作为主节点 Controller,多台作为从节点 Agent。Controller 负责分发测试计划与汇总结果;每个 Agent 完整执行同一份测试计划,彼此不做负载均衡,因此总压力≈单台线程数 × 从节点数。为保证稳定,建议 Controller 与所有 Agent 使用相同版本的 Java 与 JMeter,并处于同一网段且网络互通。为降低复杂度,可先禁用 RMI SSL。
- Java 与 JMeter 安装(所有节点):
- 安装 OpenJDK(示例为 OpenJDK 11):
sudo apt-get update & & sudo apt-get install -y openjdk-11-jdk - 下载并解压 JMeter(示例版本 5.4.3):
wget https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.4.3.tgz tar -xzf apache-jmeter-5.4.3.tgz sudo ln -sfn $PWD/apache-jmeter-5.4.3 /opt/jmeter echo 'export JMETER_HOME=/opt/jmeter' | sudo tee -a /etc/profile.d/jmeter.sh echo 'export PATH=$JMETER_HOME/bin:$PATH' | sudo tee -a /etc/profile.d/jmeter.sh source /etc/profile.d/jmeter.sh - 验证:
java -version、jmeter -v。
- 安装 OpenJDK(示例为 OpenJDK 11):
二 节点配置
- 主节点 Controller 配置:
- 编辑
$JMETER_HOME/bin/jmeter.properties,添加所有从节点地址(默认端口 1099):remote_hosts=192.168.1.11:1099,192.168.1.12:1099 server.rmi.ssl.disable=true
- 编辑
- 从节点 Agent 配置:
- 指定本机 RMI 主机名(避免多网卡取错 IP):编辑
$JMETER_HOME/bin/jmeter-server,设置:RMI_HOST_DEF=-Djava.rmi.server.hostname=192.168.1.11 - 可选:自定义端口(如 1089),编辑
$JMETER_HOME/bin/jmeter.properties:
并在server_port=1089 server.rmi.localport=1089remote_hosts中使用对应端口。 - 禁用 RMI SSL(与 Controller 一致):
server.rmi.ssl.disable=true - 启动:
$JMETER_HOME/bin/jmeter-server(后台可用:nohup $JMETER_HOME/bin/jmeter-server &)。
- 指定本机 RMI 主机名(避免多网卡取错 IP):编辑
三 运行测试
- GUI 方式(仅用于调试):在 Controller 执行
jmeter,打开测试计划,通过 Run → Remote Start 启动单个 Agent,或 Run → Remote Start All 启动全部。 - 非 GUI 方式(推荐压测):在 Controller 执行
- 启动全部从节点:
jmeter -n -t testplan.jmx -r -l result.jtl - 指定部分从节点:
jmeter -n -t testplan.jmx -R 192.168.1.11:1099,192.168.1.12:1099 -l result.jtl - 生成报告:
jmeter -g result.jtl -o report/ - 说明:非 GUI 模式不启动 JMeter GUI,资源占用更低,适合正式压测与 CI。
- 启动全部从节点:
四 常见问题与排查
- 无法连接从节点(Connection refused/超时):
- 核对 IP、端口 与
remote_hosts一致;开放防火墙端口(默认 1099,若自定义需放行对应端口);确保 Controller 与 Agent 网络互通。
- 核对 IP、端口 与
- 查看结果树响应为空:
- 分布式模式下,默认不回传响应体。如需查看,可在 Controller 的
jmeter.properties中启用相关项(如view.results.tree.max_size等)以允许更大响应回传,或改用聚合报告/后端监听器分析。
- 分布式模式下,默认不回传响应体。如需查看,可在 Controller 的
- 多网卡导致 RMI 绑定错误 IP:
- 在
jmeter-server中显式设置RMI_HOST_DEF=-Djava.rmi.server.hostname=< 内网IP>。
- 在
- CSV 参数化文件不一致:
- 将 CSV 等数据文件复制到所有 Agent 相同路径,并在测试计划中统一使用相对路径或相同绝对路径。
- 版本与环境不一致:
- 保证 Java 版本 与 JMeter 版本/插件 一致,避免因序列化或插件差异导致执行异常。
五 实践建议
- 角色分离:尽量让 Controller 仅做调度与聚合,不承担压测负载;如需让 Controller 也参与压测,可在其上也启动
jmeter-server并将其加入remote_hosts。 - 资源与规模:单台机器的 JMeter 受 CPU/内存/网卡 限制,必要时横向扩展 Agent;预估压力时按“总压力 = 单台线程数 × 从节点数”规划,并逐步加压观察瓶颈。
- 网络与端口:优先使用内网通信,固定并统一 RMI 端口,在防火墙/安全组中放行,减少因网络波动导致的波动与丢包。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian上JMeter分布式测试方法
本文地址: https://pptw.com/jishu/769211.html
