温馨提示×

JMeter在Ubuntu上如何高效运行

小樊
41
2025-11-28 22:48:37
栏目: 智能运维

Ubuntu上高效运行JMeter的实用指南

一 基础环境快速到位

  • 安装 Java 8/11/17(Ubuntu 推荐 OpenJDK):sudo apt update && sudo apt install -y default-jdk
  • 下载并解压 Apache JMeter(二进制包,无需安装):
    • wget https://downloads.apache.org/jmeter/binaries/apache-jmeter-X.Y.Z.tgz
    • tar -xzf apache-jmeter-X.Y.Z.tgz && cd apache-jmeter-X.Y.Z
  • 建议使用非 GUI 模式执行压测:./bin/jmeter -n -t your.jmx -l result.jtl
  • 可选:将 JMETER_HOME/bin 加入 PATH,便于全局执行 jmeter 命令。

二 非GUI执行与报告生成

  • 标准命令行模板:
    • 仅保存结果:jmeter -n -t test.jmx -l result.jtl
    • 运行并生成 HTML 报告:jmeter -n -t test.jmx -l result.jtl -e -o report
  • 建议将 JMX、JTL、报告目录分路径管理,避免日志与报告相互覆盖;报告生成需安装 jmeter-plugins-cmd 插件(通过插件管理器安装)。

三 关键配置优化

  • 精简结果输出(降低 I/O 与磁盘占用)
    • jmeter.save.saveservice.output_format=csv
    • jmeter.save.saveservice.response_data=false
    • jmeter.save.saveservice.requestHeaders=false
    • jmeter.save.saveservice.assertion_results_failure_message=false
  • HTTP 客户端与超时(提升吞吐与稳定性)
    • httpclient4.time_to_live=60000
    • httpclient4.retrycount=1
    • httpclient4.max_total=200
    • httpclient4.default.max_per_route=20
    • httpclient.timeout=5000
    • httprequest.connect_timeout=60000
  • 控制台与日志
    • summariser.interval=10(更频繁查看进度)
    • log_level.jmeter=INFO
  • JVM 堆与 GC(避免 OOM、降低停顿)
    • 编辑 jmeter 启动脚本中的 HEAP:HEAP=“-Xms2g -Xmx4g
    • 增加垃圾回收:添加 -XX:+UseG1GC
    • 无头环境可加:-Djava.awt.headless=true
  • 监听器选择
    • 压测时避免 View Results Tree 等高开销监听器,优先 Aggregate Report / Summary Report

四 监控与诊断

  • 被压测服务器资源监控(ServerAgent + PerfMon)
    • 在被测机部署 ServerAgent,默认端口 4444,可自定义:./startAgent.sh --tcp-port 5678 --udp-port 6789
    • 如启用防火墙需放行端口:sudo ufw allow 4444
    • 在 JMeter 中通过 jp@gc - PerfMon Metrics Collector 添加监控项(CPU、Memory、Disk I/O、Network I/O 等),配置 Host/IPPort 即可采集。

五 分布式压测与常见问题

  • 分布式要点
    • 主从机 Java/JMeter 版本尽量一致,避免兼容性问题
    • 生成 RMI 密钥:在 master 执行 create-rmi-keystore.sh,将 rmi_keystore.jks 分发到所有 slave 的 JMETER_HOME/bin
    • slave 配置:jmeter.properties 中设置 server.rmi.ssl.disable=true;jmeter-server 启动参数指定 -Djava.rmi.server.hostname=从机IP
    • master 配置:remote_hosts=ip1:port,ip2:port;执行命令示例:jmeter -n -t test.jmx -R ip1,ip2 -l result.jtl -e -o report
  • 常见问题速解
    • “Server failed to start: localhost is a loopback address”:在 slave 的 jmeter-server 启动命令中添加 -Djava.rmi.server.hostname=实际IP
    • 端口与防火墙:确保 4444(ServerAgent)、1099(RMI)等端口在防火墙放行
    • 内存不足:按第三节调大 HEAP,并控制结果保存字段,避免 OOM 与磁盘抖动。

0