温馨提示×

CentOS环境下JMeter分布式测试设置

小樊
33
2025-12-21 17:51:05
栏目: 智能运维

CentOS 环境下 JMeter 分布式压测设置

一 架构与前置条件

  • 角色划分:一台作为控制机 Master(调度与聚合结果),多台作为执行机 Slave(产生并发)。也可让 Master 兼任 Slave,但更推荐分离以减小干扰。所有节点建议在同一网段,并开启时间同步(如 chrony/ntpd)。
  • 版本一致:所有节点使用相同的 JDK 1.8JMeter 版本/插件,避免序列化与兼容性问题。
  • 资源基线:在约 2–3 GHz CPU 的单机 JMeter 客户端上,通常可支撑约 1000–2000 线程(取决于协议、断言、监听器与处理逻辑)。

二 环境安装与验证

  • 安装 JDK 与 JMeter(示例路径,可按需调整):
    • 配置环境变量(全局或用户级均可,示例为全局):
      • 编辑 /etc/profile~/.bashrc,加入:
        • export JAVA_HOME=/opt/jdk1.8.0_181
        • export JMETER_HOME=/opt/apache-jmeter-5.4.3
        • export PATH=$PATH:$JAVA_HOME/bin:$JMETER_HOME/bin
      • 使配置生效:source /etc/profile 或 source ~/.bashrc
    • 验证:java -version;jmeter -v
  • 建议:控制机与执行机均完成上述安装与验证,保持版本一致。

三 关键配置步骤

  • 关闭 RMI SSL(内网测试常用,便于连通):
    • 在所有节点(Master 与 Slave)编辑 $JMETER_HOME/bin/jmeter.properties
      • server.rmi.ssl.disable=true
  • 固定 RMI 端口(便于防火墙放行):
    • 在每台 Slave$JMETER_HOME/bin/jmeter.properties 中设置:
      • server_port=1099
      • server.rmi.localport=1099
    • 在每台 Slave$JMETER_HOME/bin/jmeter-server 中设置本机 IP(取消注释并填写):
      • RMI_HOST_DEF=-Djava.rmi.server.hostname=本机IP
    • Master$JMETER_HOME/bin/jmeter.properties 中登记所有 Slave:
      • remote_hosts=192.168.1.20:1099,192.168.1.21:1099,192.168.1.22:1099
  • 防火墙放行(示例为 firewalld,生产可按最小端口开放):
    • firewall-cmd --zone=public --add-port=1099/tcp --permanent
    • firewall-cmd --reload
  • 启动与连通性检查:
    • 各 Slave 执行:$JMETER_HOME/bin/jmeter-server(日志:bin/jmeter-server.log
    • Master 查看:bin/jmeter.log 与 GUI 中“运行 → 远程启动/远程启动所有”

四 运行测试与结果收集

  • GUI 方式(仅建议调试):
    • Master 启动 GUI:jmeter
    • 运行 → 远程启动(单个 Slave)或 远程启动所有(All Slaves)
  • 非 GUI 命令行(推荐压测):
    • 基本执行(使用配置文件中的 remote_hosts):
      • jmeter -n -t test.jmx -l result.jtl -j run.log -e -o report
    • 指定远程节点(覆盖 remote_hosts):
      • jmeter -n -t test.jmx -R 192.168.1.20:1099,192.168.1.21:1099 -l result.jtl -e -o report
    • 常用参数:-n(非GUI)、-t(脚本)、-l(结果JTL)、-j(日志)、-o(HTML报告目录,需为空)、-R(指定远程列表)
  • 结果聚合与报告:
    • 各 Slave 执行完成后将结果回传 Master,在 Master 使用聚合报告Dashboard Report查看整体指标(吞吐、响应时间分位、错误率等)。

五 常见问题与最佳实践

  • 版本与依赖:Master 与所有 Slave 的 JDK/JMeter/插件务必一致;脚本依赖的 JAR/CSV/证书需在 Slave 上保持相同路径与内容
  • CSV 参数化:每台 Slave 放置一份 CSV,且数据应去重或分片,避免多机重复数据导致统计偏差。
  • 网卡与 RMI 主机名:多网卡/云主机需确保 RMI 绑定到与控制机可达的 IP,必要时在 jmeter-server 中显式设置 -Djava.rmi.server.hostname
  • 端口与防火墙:固定 server_port=1099server.rmi.localport=1099,并在防火墙放行对应端口;如需开放更多端口,可一并放行。
  • Master 参与压测:默认 Master 不执行采样;如需让 Master 也产生压力,可在 Master 上也启动 jmeter-server 并将其加入 remote_hosts
  • 资源与规模:单台 JMeter 客户端约可支撑 1000–2000 线程(视场景而定);并发过高时优先横向扩展 Slave 数量而非仅提高单机线程。
  • 日志排查:优先查看 bin/jmeter-server.log(Slave)与 bin/jmeter.log(Master)定位连通与执行问题。

0