温馨提示×

ubuntu jmeter分布式测试

小樊
38
2025-12-06 18:29:51
栏目: 智能运维

Ubuntu 下 JMeter 分布式压测实操指南

一 架构与前提

  • 架构说明:由一台控制机 Controller/Master负责下发测试计划与汇总结果,多台执行机 Worker/Agent实际产生负载;控制机可以不跑线程,也可参与压测。通信基于 RMI,默认端口为 1099。为简化排障,实验环境可先关闭防火墙或放行相关端口。所有节点建议安装相同版本的 JavaJMeter,并保持插件一致。执行机不需要 GUI,建议全程使用非 GUI 模式运行压测。

二 环境准备与安装

  • 安装 Java(Ubuntu 推荐 OpenJDK 11):
    • 命令:sudo apt update && sudo apt install -y openjdk-11-jdk
    • 验证:java -version
  • 安装 JMeter(所有节点一致版本):
    • 下载并解压(示例版本 5.6.2):
      • wget https://dlcdn.apache.org/jmeter/binaries/apache-jmeter-5.6.2.tgz
      • tar -xzf apache-jmeter-5.6.2.tgz && cd apache-jmeter-5.6.2
  • 目录约定(示例):
    • 控制机:/opt/jmeter/apache-jmeter-5.6.2
    • 执行机:/opt/jmeter/apache-jmeter-5.6.2
  • 建议:将 JMeter 加入 PATH,或使用安装目录下的 bin/jmeterbin/jmeter-server 执行命令。

三 关键配置

  • 执行机 Worker 配置(所有执行机)
    • 编辑 bin/jmeter.properties
      • 禁用 RMI SSL:server.rmi.ssl.disable=true
      • 如有多网卡或主机名解析异常,显式设置本机 IP:java.rmi.server.hostname=<执行机IP>
      • 可选:自定义 RMI 端口(默认 1099),如 server_port=1888server.rmi.localport=1889(需与防火墙策略一致)
    • 启动执行机:
      • 前台:./jmeter-server -Djava.rmi.server.hostname=<执行机IP>
      • 后台:nohup ./jmeter-server -Djava.rmi.server.hostname=<执行机IP> > jmeter-server.log 2>&1 &
  • 控制机 Master 配置
    • 编辑 bin/jmeter.properties
      • 指定执行机列表:remote_hosts=<IP1>:<PORT1>,<IP2>:<PORT2>(如未改端口,默认 1099
      • 禁用 RMI SSL:server.rmi.ssl.disable=true
    • 资源文件分发:将 .jmx 及所有依赖(如 CSV 数据文件、JAR 插件)按相同路径复制到各执行机,否则执行机会因找不到文件而报错或数据为空。

四 运行测试

  • 非 GUI 命令行(推荐用于正式压测)
    • 启动全部执行机:./jmeter -n -t /path/test.jmx -r -l result.jtl
    • 指定部分执行机:./jmeter -n -t /path/test.jmx -R <IP1>,<IP2> -l result.jtl
    • 生成 HTML 报告:先跑完导出 JTL,再执行
      • ./jmeter -g result.jtl -o Report
  • GUI 模式(仅用于调试)
    • 在控制机 GUI 中打开脚本,菜单“运行”→“远程启动”或“远程启动所有”。

五 常见问题与排查

  • 无法连接执行机
    • 检查网络与端口:在控制机执行 ping <执行机IP>telnet <执行机IP> 1099;不通则放行防火墙或临时关闭防火墙测试。
  • RMI 绑定到回环地址
    • 错误示例:Cannot start. ubuntu is a loopback address
    • 解决:在执行机启动时显式指定本机 IP:-Djava.rmi.server.hostname=<执行机IP>,或在 jmeter.properties 中设置 java.rmi.server.hostname
  • 执行机报 “Server failed to start: could not find ApacheJmeter_core.jar”
    • 若日志中已出现 Created remote object 且端口在监听,通常不影响使用;检查 JMETER_HOMEPATH 是否正确,确保以 JMeter 安装目录的 bin/jmeter-server 启动。
  • 资源文件找不到或数据为空
    • CSV/JAR 等依赖与 .jmx 保持相同目录结构分发到所有执行机;路径在脚本中使用相对路径保持一致。
  • 内存不足
    • 在执行机编辑 bin/jmeter(或 jmeter 启动脚本)中的堆内存参数,例如:HEAP="-Xms2g -Xmx4g",再重启 jmeter-server
  • 版本与插件不一致
    • 控制机与所有执行机的 JMeter 版本、插件、Java 版本尽量保持一致,避免因序列化/类缺失导致异常。

0