温馨提示×

centos如何解决jmeter报错

小樊
33
2025-12-13 20:21:16
栏目: 智能运维

CentOS 上 JMeter 常见报错与快速修复

一 环境权限与启动类问题

  • 权限不足:执行脚本或启动服务时报 Permission denied,执行:chmod -R 755 apache-jmeter-<版本号>,确保 jmeterjmeter-server 具备可执行权限。
  • 图形界面错误:在无 GUI 的服务器上运行 GUI 时报 No X11 DISPLAY variable was set,改用命令行模式:jmeter -n -t your_plan.jmx -l result.jtl;如确需 GUI,使用 X11 转发或在本地机器运行 GUI。
  • JDK 版本不匹配:JMeter 5.x 建议使用 JDK 8;执行 java -version 检查,版本不符请安装并配置 JAVA_HOME 后再启动。
  • 脚本换行符问题:从 Windows 拷贝的脚本在 Linux 上执行报 “bad interpreter: No such file or directory”,使用 dos2unix your_script.shsed -i 's/\r$//' your_script.sh 修正换行符。

二 分布式与网络连通性问题

  • 防火墙阻断:控制机与执行机之间端口不通,先放行或临时关闭防火墙:systemctl status firewalldsystemctl stop firewalldsystemctl disable firewalld(生产环境建议仅放行必要端口)。
  • RMI 主机名解析错误:出现 Connection refused/timeout 或日志中出现 169.254.x.x 等异常地址,通常是多网卡/桥接导致。在执行机设置:RMI_HOST_DEF=-Djava.rmi.server.hostname=<本机内网IP> 后启动 ./jmeter-server;控制机 remote_hosts 填写执行机 IP:端口
  • 端口未放行或配置不一致:默认 server_port=1099,可自定义如 1567 并在 jmeter.properties 同时设置 server.rmi.localport=1567;控制机 remote_hosts=IP:1567,用 telnet IP 1567 验证连通性。
  • 主机名与 /etc/hosts 不一致:控制机收不到执行机信息,检查执行机 hostname/etc/hosts 映射是否一致。
  • RMI SSL 证书缺失:执行机启动报 java.io.FileNotFoundException: rmi_keystore.jks,在 jmeter.propertiesserver.rmi.ssl.disable=true(控制机与执行机保持一致)。
  • 远程执行卡住或提示 Engine is busy:先使用控制机的 Remote Stop All 结束远程进程,再重启执行机 jmeter-server;多网卡/无线与有线并存时优先使用固定内网 IP。

三 文件与路径相关错误

  • 资源文件未找到:测试计划引用的 CSV/数据文件/插件 JAR 不存在或路径错误。将文件放到 JMETER_HOME/bin 或使用绝对路径;分布式场景需在各 slave 上保持相同路径与内容一致。
  • 命令行运行建议:非 GUI 场景使用 jmeter -n -t plan.jmx -l result.jtl -e -o report 生成聚合报告,避免依赖 GUI 组件。

四 一键排查清单与最小配置示例

  • 执行机(CentOS)最小配置步骤
    1. 安装 JDK 8 并配置环境变量;
    2. 解压 JMeter,赋权:chmod -R 755 apache-jmeter-<版本号>
    3. 编辑 bin/jmeter.properties
      • server.rmi.ssl.disable=true
      • server_port=1567
      • server.rmi.localport=1567
    4. 设置本机 IP:export RMI_HOST_DEF=-Djava.rmi.server.hostname=<内网IP>
    5. 启动:nohup ./jmeter-server &
    6. 防火墙放行 1567(或临时关闭)。
  • 控制机配置与连通性验证
    1. remote_hosts=<执行机IP>:1567
    2. telnet <执行机IP> 1567 能通后再远程启动;
    3. 分布式运行时避免 GUI 监听器(如 View Results Tree),减少内存占用。
  • 常用命令
    • 查看 Java:java -version
    • 查看防火墙:systemctl status firewalld
    • 放行端口(示例):firewall-cmd --add-port=1567/tcp --permanent && firewall-cmd --reload
    • 无 GUI 运行:jmeter -n -t plan.jmx -l result.jtl -e -o report

0