温馨提示×

Debian下如何部署JMeter集群

小樊
44
2025-12-26 21:43:14
栏目: 智能运维

在 Debian 上部署 JMeter 分布式集群

架构与准备

  • 角色划分:一台作为主控机 Master,多台作为执行机 Agent/Slave。JMeter 分布式由 Master 分发测试计划,各 Agent 并行执行并将结果回传 Master 汇总。为保证稳定性,建议所有节点安装相同版本的 Java 与 JMeter
  • 基础环境:安装 Java 11(OpenJDK 11)Apache JMeter 5.6.2(示例版本),并准备若干 Debian 主机,确保节点间网络互通(内网更佳)。

安装 Java 与 JMeter

  • 安装 Java(所有节点)
    • 执行:sudo apt-get update && sudo apt-get install -y openjdk-11-jdk wget
  • 安装 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
      
    • 可选:配置环境变量(便于命令行调用)
      echo 'export JMETER_HOME=/opt/apache-jmeter-5.6.2' >> ~/.bashrc
      echo 'export PATH=$JMETER_HOME/bin:$PATH' >> ~/.bashrc
      source ~/.bashrc
      
  • 版本一致性检查
    • 在各节点执行:java -version$JMETER_HOME/bin/jmeter -v,确保输出一致。

配置 JMeter 分布式

  • 执行机 Agent 配置(所有 Agent)
    • 编辑文件:$JMETER_HOME/bin/jmeter.properties
      # 禁用 RMI SSL(测试环境常用,生产可按需开启)
      server.rmi.ssl.disable=true
      
      # 指定服务端口(默认 1099,可按需修改)
      server_port=1099
      
      # 可选:指定 RMI 本地端口(便于防火墙放行)
      server.rmi.localport=1099
      
    • 启动服务(建议使用 nohup 后台运行,并显式指定本机 IP)
      cd $JMETER_HOME/bin
      nohup ./jmeter-server -Djava.rmi.server.hostname=<AGENT_IP> &
      
  • 主控机 Master 配置
    • 编辑文件:$JMETER_HOME/bin/jmeter.properties
      # 填写所有 Agent 的 IP:端口
      remote_hosts=<AGENT1_IP>:1099,<AGENT2_IP>:1099
      
    • 说明:如需 Master 也参与压测,可在 Master 上同样启动 jmeter-server 并将其 IP 加入 remote_hosts

启动测试与结果收集

  • 非 GUI 命令行执行(推荐)
    • 在 Master 执行(示例):
      jmeter -n -t testplan.jmx -R <AGENT1_IP>:1099,<AGENT2_IP>:1099 -l result.jtl
      
    • 常用参数:
      • -n 非 GUI 模式
      • -t 指定测试计划 JMX 文件
      • -R 指定远程 Agent 列表(覆盖 remote_hosts
      • -l 指定结果文件(JTL)
      • 测试结束后生成 HTML 报告(可选):-e -o report
  • GUI 方式(仅用于调试)
    • 在 Master 执行:jmeter,在菜单“运行 → 远程启动/远程全部启动”选择目标 Agent。

防火墙与网络、常见问题

  • 防火墙与端口放行(Debian 常用 UFW)
    • 放行 RMI 端口(示例为 1099):
      sudo ufw allow 1099/tcp
      sudo ufw reload
      
    • 如使用自定义端口,请同步放行对应端口(含 server_portserver.rmi.localport)。
  • 常见错误与处理
    • 报错:java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory)
      • 处理:在 jmeter.properties 中设置 server.rmi.ssl.disable=true 并重启 jmeter-server
    • 报错:Could not find the TestPlan class!
      • 处理:测试计划(JMX)中包含**非 ASCII 字符(如中文)**时易触发,建议将 JMX 保存为 UTF-8 无 BOM 或在 Linux 环境重新保存。
    • 版本不一致导致的问题
      • 处理:确保 JMeter 与插件版本在 Master 与所有 Agent 上完全一致。
    • 主机名解析问题
      • 现象:启动 jmeter-server 时报“未知的名称或服务”。
      • 处理:在 /etc/hosts 中为本机添加 IP 与主机名映射,确保 RMI 通信正常。

0