如何在CentOS上部署JMeter集群进行测试
导读:在 CentOS 上部署 JMeter 分布式集群 一 架构与前置准备 架构说明:选择一台作为控制机 Master,其余作为执行机 Slave。Master 负责分发脚本、启停与汇总结果;Slave 仅执行请求并把结果回传。为提高稳定性,...
在 CentOS 上部署 JMeter 分布式集群
一 架构与前置准备
- 架构说明:选择一台作为控制机 Master,其余作为执行机 Slave。Master 负责分发脚本、启停与汇总结果;Slave 仅执行请求并把结果回传。为提高稳定性,建议 Master 与 Slave 分离部署,且 Master 默认不参与发压。
- 版本一致:所有节点使用相同版本的 JDK 与 JMeter,混用版本可能导致兼容性问题。
- 网络与时间:所有主机在同一网段,并开启时间同步(如 chrony/ntpd),避免 RMI 与证书校验异常。
- 资源基线:在约2–3 GHz CPU的单机上,单个 JMeter 客户端通常可支撑约1000–2000 线程(取决于取样器类型与业务复杂度)。
二 安装与基础配置
- 安装 JDK 与 JMeter(所有节点)
- 安装 JDK 8(推荐 64 位),配置环境变量(/etc/profile 或 ~/.bashrc):
- export JAVA_HOME=/usr/java/jdk1.8.0_xxx
- export PATH=$JAVA_HOME/bin:$PATH
- 安装 JMeter(解压至如 /opt/apache-jmeter-5.x),配置环境变量:
- export JMETER_HOME=/opt/apache-jmeter-5.x
- export PATH=$JMETER_HOME/bin:$PATH
- 验证:java -version 与 jmeter -v 正常返回版本号。
- 安装 JDK 8(推荐 64 位),配置环境变量(/etc/profile 或 ~/.bashrc):
- 内存调优(所有节点)
- 编辑 JMeter 启动脚本(如 bin/jmeter 或 jmeter.sh),调整 HEAP,例如:-Xms2g -Xmx2g(建议 Xms 与 Xmx 一致;通常不超过物理内存的 50%–80%,视机器资源而定)。
- 时间同步(所有节点)
- 例如:sudo yum install -y chrony & & sudo systemctl enable --now chronyd & & sudo chronyc sources。
三 集群配置步骤
- Slave 节点配置
- 关闭 RMI SSL(内网压测常用):在 bin/jmeter.properties 或 bin/user.properties 中设置
- server.rmi.ssl.disable=true
- 固定 RMI 端口(便于防火墙放行):在 bin/jmeter.properties
- server_port=1099
- server.rmi.localport=1099
- 指定本机 RMI 主机名(多网卡/虚 IP 场景尤为重要):编辑 bin/jmeter-server,设置
- RMI_HOST_DEF=-Djava.rmi.server.hostname=本机内网IP
- 启动:nohup ./jmeter-server -Djava.rmi.server.hostname=本机IP &
- 关闭 RMI SSL(内网压测常用):在 bin/jmeter.properties 或 bin/user.properties 中设置
- Master 节点配置
- 关闭 RMI SSL(与控制机一致):server.rmi.ssl.disable=true
- 配置远程节点列表:在 bin/jmeter.properties
- remote_hosts=slave1_ip:1099,slave2_ip:1099,slave3_ip:1099
- 防火墙与端口(所有节点按需)
- 放行 1099(RMI)与 Slave 的 server.rmi.localport(如 1099/2099 等):
- firewall-cmd --zone=public --add-port=1099/tcp --permanent
- firewall-cmd --zone=public --add-port=2099/tcp --permanent
- firewall-cmd --reload
- 放行 1099(RMI)与 Slave 的 server.rmi.localport(如 1099/2099 等):
- 依赖文件与路径
- 脚本中如有 CSV 参数化/依赖文件,需在各 Slave 相同路径放置同名文件,否则会报文件未找到或数据不一致。
四 执行测试与结果收集
- 非 GUI 命令行(推荐)
- 基本执行(指定 Slave 列表):
- jmeter -n -t your_plan.jmx -R slave1_ip:1099,slave2_ip:1099 -l result.jtl -j run.log
- 生成 HTML 报告(Dashboard):
- jmeter -n -t your_plan.jmx -R slave1_ip:1099,slave2_ip:1099 -l result.csv -e -o report
- 说明:-R 覆盖 remote_hosts;-l 输出 JTL/CSV;-e -o 生成报告目录;-j 指定日志。
- 基本执行(指定 Slave 列表):
- GUI 方式(仅用于调试)
- 在 Master 启动 GUI:jmeter
- 菜单 Run → Remote Start/Remote Start All 选择目标 Slave 或全部节点执行。
- 结果汇总与校验
- 总样本数 ≈ 线程数 × 循环次数 × Slave 数量(不含控制器自带线程组)。
- 报告关注:Aggregate Report(Samples、Average、90%/95%/99% Line、Error%、Throughput)与 Dashboard(响应时间分布、TPS 等)。
五 常见问题与优化建议
- 版本与依赖
- Master 与 Slave JMeter/JDK 版本必须一致;若脚本使用插件/自定义 JAR,需在各 Slave 的 lib/ext 同步相同依赖,避免解析失败。
- 内存与 GC
- 出现 OutOfMemoryError 时增大 HEAP(如 -Xms2g -Xmx2g),并优先使用非 GUI模式执行;必要时减少监听器(如关闭查看结果树)。
- 多网卡/虚 IP
- 明确设置 Slave 的 java.rmi.server.hostname 为与控制机通信的内网 IP,否则 Master 可能连不通或回传异常。
- 端口与防火墙
- 固定 server_port 与 server.rmi.localport,并在防火墙放行;如仍不通,检查云安全组/本机 iptables。
- 文件与路径
- CSV/附件/证书等依赖必须在所有 Slave 同路径;否则会出现空数据或 0 样本。
- Master 负载
- Master 仅做调度与汇总,建议不要参与发压;大规模集群时可考虑多 Master 分担或仅保留轻量汇总职责。
- 网络与端口耗尽
- 大规模短连接压测时,注意本机/中间设备端口与连接回收策略,必要时扩大可用端口范围与优化 TCP 参数。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何在CentOS上部署JMeter集群进行测试
本文地址: https://pptw.com/jishu/786136.html
