温馨提示×

ubuntu jmeter常见问题

小樊
37
2025-12-10 17:45:02
栏目: 智能运维

Ubuntu 上 JMeter 常见问题与排查清单

一 安装与 Java 版本不兼容

  • 现象:启动报错或提示类似“This version of the Java Runtime only recognizes class file”,或 JMeter 无法启动。
  • 原因:JMeter 版本与 Java 主版本不匹配(如使用过新的 Java 运行老版本 JMeter,或相反)。
  • 排查与修复:
    • 查看版本:java -version、jmeter -v。
    • 对照所用 JMeter 发行说明选择兼容的 Java 8/11/17;必要时安装合适版本(如 sudo apt install openjdk-11-jdk)。
    • 正确设置 JAVA_HOME 与 PATH,确保命令行使用的是期望的 Java。示例:
      • export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
      • export PATH=$JAVA_HOME/bin:$PATH
    • 重新启动 JMeter 验证。

二 命令行运行与结果查看

  • 非 GUI 执行(推荐压测时使用):
    • 命令模板:jmeter -n -t your.jmx -j run.log -l result.jtl -e -o report
    • 说明:-n 非 GUI、-t 脚本、-j 日志、-l 结果文件(JTL/CSV)、-e 生成报告、-o 报告输出目录(必须为空)。
  • 查看结果:
    • result.jtl 拷贝到本地,在 JMeter GUI 中通过“聚合报告”“查看结果树”等监听器打开分析。

三 分布式压测连接与主机名问题

  • 常见报错与处理:
    • Cannot start. ubuntu is a loopback address”:在 jmeter-server 启动前设置本机非回环地址,例如:
      • 命令行:./jmeter-server -Djava.rmi.server.hostname=你的服务器IP
      • 或在 jmeter-server 脚本中设置 RMI_HOST_DEF=-Djava.rmi.server.hostname=你的服务器IP
    • rmi_keystore.jks not found”:在 jmeter.properties 中将 server.rmi.ssl.disable 设为 true(测试环境常用,生产请评估安全性)。
    • Master 卡在 “Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445”:多为 RMI 通信地址解析错误。在 system.properties 显式设置 java.rmi.server.hostname=Master实际IP,确保 Slave 能回连;同时核对 Slave 的 remote_hosts 配置为 Master IP:端口。

四 系统资源与网络瓶颈

  • 端口与连接耗尽:
    • 现象:出现 “java.net.NoRouteToHostException”“Cannot assign requested address” 或大量 TIME_WAIT
    • 优化建议(/etc/sysctl.conf):
      • net.ipv4.ip_local_port_range = 1024 65535
      • net.ipv4.tcp_tw_reuse = 1
      • net.ipv4.tcp_fin_timeout = 15~30
      • 视情况调整 net.ipv4.tcp_max_tw_buckets
    • 使配置生效:sysctl -p
  • 文件句柄限制:
    • /etc/security/limits.conf 增加:
        • soft nofile 65535
        • hard nofile 65535
        • soft nproc 65535
        • hard nproc 65535
    • 重启 sshd 或重新登录会话后生效(ulimit -n 验证)。
  • 内存与线程不足:
    • 现象:OutOfMemoryError、unable to create new native thread。
    • 处理思路:
      • 合理设置堆大小(-Xms/-Xmx),避免盲目增大;必要时降低并发线程数。
      • 适度减小线程栈(-Xss),如从默认 1M 调至 256k~512k(视脚本与依赖而定)。
      • 检查系统 swap 是否充足;确认运行在 64 位 Java + 64 位 OS
      • 排查容器/虚拟机内存限制与 cgroup 配额。

五 插件与依赖缺失

  • 现象:运行含 WebSocket 等扩展的脚本时报 NoClassDefFoundError(如缺少 jetty-util、websocket-client 等)。
  • 处理:
    • 使用 JMeter Plugins Manager 安装对应插件及其依赖,或手动将依赖 JAR 放入 JMETER_HOME/lib/ext
    • 注意依赖版本要与 JMeter 版本匹配,避免混用不同大版本的依赖包。

0