温馨提示×

jmeter在centos运行报错怎么办

小樊
36
2025-12-09 21:21:37
栏目: 智能运维

CentOS 上运行 JMeter 报错的快速排查与修复

一、先定位错误类型

  • 查看 JMeter 日志:JMeter 在 bin/jmeter.log 输出运行日志;命令行执行时可用 -j 日志文件 单独落盘,便于分析。必要时在 bin/log4j2.xml 调整日志级别为 DEBUG 获取更详细信息。示例:jmeter -n -t test.jmx -l result.jtl -j jmeter.log。
  • 命令行常见报错优先看标准输出与退出码;若为 Java 堆或本地内存问题,会生成 hs_err_pid.log*。
  • 分布式场景同时检查 jmeter-server.log(执行机)与控制机控制台输出。

二、常见报错与对应修复

  • 权限不足 Permission denied
    对 JMeter 目录授予可执行权限:chmod -R 755 apache-jmeter-<版本>。

  • Java 内存不足 Cannot allocate memory / There is insufficient memory
    现象:启动或运行中出现 “OpenJDK … error=‘Cannot allocate memory’” 并生成 hs_err_pid.log*。处理:释放机器内存或调小 JMeter 堆(见下一节),确保可用内存≥1–2 GB 再运行。

  • 分布式连接被拒 Connection refused / timeout
    要点:确认 server_port(默认 1099)与 server.rmi.localport 一致;在 jmeter.properties 可设置 server_port=1567、server.rmi.localport=1567;控制机 remote_hosts=IP:端口。放通防火墙或临时停止:firewall-cmd --state、systemctl stop firewalld;必要时禁用开机自启:systemctl disable firewalld。

  • 双网卡或回环地址导致 RMI 绑定错误
    启动执行机时显式指定本机 IP:./jmeter-server -Djava.rmi.server.hostname=本机IP

  • 缺少 SSL 密钥文件 rmi_keystore.jks
    bin/jmeter.properties 将 server.rmi.ssl.disable 设为 true(测试环境常用)。

  • hostname 与 /etc/hosts 不一致导致控制机收不到回连
    检查 slave 的 hostname/etc/hosts 映射是否一致。

  • 远程执行卡住或提示 Engine is busy
    先使用控制机 “Remote Stop all” 结束远程残留进程,再重启 jmeter-server;多网卡/无线与有线并存时易触发,确保网络与绑定一致。

  • 运行日志长时间停在 “Waiting for possible shutdown message on port 4445
    多为 HTTP 请求未设超时导致无限等待;在 HTTP Request Defaults → Advanced 设置 ConnectResponse 超时(如 10000 ms),并尽量升级到较新版本 JMeter。

三、环境与启动参数建议

  • Java 版本:JMeter 5.x 建议使用 JDK 8(或兼容的 JDK 11)。用 java -version 确认;若版本不匹配,更换 JDK 并配置 JAVA_HOME
  • 堆内存设置:编辑 bin/jmeter(或 setenv.sh)调整 HEAP,例如:-Xms1g -Xmx2g(根据可用内存与压测规模调整,避免超过物理内存)。
  • 分布式端口规划:避免端口冲突,自定义 server_port 与 server.rmi.localport(如 1567),并在控制机 remote_hosts 使用 IP:端口 形式。
  • 防火墙策略:测试环境可临时关闭并禁用开机启动;生产环境建议仅放行 10994445 等必要端口,或使用更细粒度的安全组/iptables 规则。

四、分布式专项检查清单

  • 网络连通性:控制机可 telnet 执行机 IP 1099;必要时测试 4445 端口。
  • RMI 绑定地址:执行机启动命令加入 -Djava.rmi.server.hostname=本机IP;控制机与执行机的 hostname / /etc/hosts 解析要一致。
  • 端口一致性:server_port 与 server.rmi.localport 保持一致,且与控制机 remote_hosts 配置匹配。
  • 日志聚焦:执行机查看 jmeter-server.log,控制机查看控制台与 jmeter.log,优先定位 “Connection refused / timeout / RMI” 等关键字。

五、最小复现与求助信息准备

  • 本地快速复现:jmeter -n -t test.jmx -l result.jtl -j jmeter.log;若仍报错,附上 jmeter.log、hs_err_pid*.log(如有)、执行命令、JMeter 版本、Java 版本与操作系统信息,便于进一步定位。

0