温馨提示×

JMeter在CentOS上如何分析测试报告

小樊
40
2025-12-27 13:48:38
栏目: 智能运维

在 CentOS 上分析 JMeter 测试报告

一 环境准备与执行测试

  • 安装 Java 8(JMeter 兼容性更好):sudo yum install -y java-1.8.0-openjdk-devel;验证:java -version。
  • 安装 JMeter(以 5.4.3 为例):
    wget https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.4.3.tgz
    tar -xzf apache-jmeter-5.4.3.tgz -C /opt/
    ln -s /opt/apache-jmeter-5.4.3 /opt/jmeter
    配置环境变量(~/.bash_profile 或 /etc/profile):
    export JMETER_HOME=/opt/jmeter
    export PATH=$PATH:$JMETER_HOME/bin
    source ~/.bash_profile
  • 运行测试并生成结果(非 GUI 模式):
    jmeter -n -t /path/to/testplan.jmx -l /path/to/results.jtl
  • 如需在测试结束后直接生成 HTML 报告:
    jmeter -n -t /path/to/testplan.jmx -l /path/to/results.jtl -e -o /path/to/report
    说明:-n 非 GUI、-t 指定脚本、-l 保存 .jtl 结果、-e 生成报告、-o 指定输出目录(必须为空或不存在)。

二 生成与查看 HTML 报告

  • 方式一(推荐):一次执行同时跑脚本与生成报告
    jmeter -n -t test.jmx -l result.jtl -e -o ./WebReport
  • 方式二:已有 .jtl 结果文件,离线生成报告
    jmeter -g result.jtl -o ./WebReport
  • 查看方式:将 ./WebReport/index.html 下载到本地用浏览器打开,或在服务器上用命令行浏览器查看:
    yum install -y elinks 或 yum install -y w3m
    elinks ./WebReport/index.html 或 w3m ./WebReport/index.html
    要点:-o 指定的目录必须为空;HTML 报告包含概览、图表、响应时间分布、吞吐量、错误率等,便于直观分析。

三 关键指标与结果判定

  • 核心列(Aggregate Report / HTML 报告表格):
    • Label:请求/事务名称
    • Samples:样本总数
    • Average / Median / 90% Line / Min / Max:响应时间相关指标(90% Line 表示 90% 请求的响应时间不超过该值)
    • Error %:错误率(业务可接受阈值通常 ≤ 1%
    • Throughput:吞吐量(requests/second,越大越好)
    • Std. Dev:标准差(越小越稳定)
  • 指标解读要点:
    • 中位数接近平均值标准差较低,说明响应时间分布稳定;
    • 90%/95%/99% Line用于评估长尾;若明显低于平均值,说明少数慢请求拉高了均值;
    • Error% 过高(如 >1%)通常意味着负载过高或系统瓶颈,需要结合响应码与错误详情定位;
    • 吞吐量反映系统处理能力,应与业务 SLA 对比评估是否满足目标。

四 进阶分析与可视化

  • 实时监控与历史趋势:在 JMeter 中添加 Backend Listener,将指标写入 InfluxDB,用 Grafana 做可视化大盘,适合长时间压测与容量评估。
  • 命令行图表导出(插件):使用 CMDRunner.jar.jtl 转为 PNG/SVG 等图表,适合在 CI/CD 或服务器上快速出图:
    cd $JMETER_HOME/lib/ext
    java -jar CMDRunner.jar --tool Reporter --generate-png threads.png --input-jtl result.jtl --plugin-type ThreadsStateOverTime
    常用类型:ThreadsStateOverTime、BytesThroughputOverTime、HitsPerSecond、ResponseTimesOverTime、ResponseTimesPercentiles 等。
  • 报告过滤与定制(user.properties):
    • 仅展示关键事务:jmeter.reportgenerator.exporter.html.series_filter=^(Search|Order)(-success|-failure)?$
    • 指定百分位:aggregate_rpt_pct1=90;aggregate_rpt_pct2=95;aggregate_rpt_pct3=99
    • 确保 CSV 保存必要字段:jmeter.save.saveservice.bytes=true、label=true、latency=true、response_code=true、successful=true、time=true、connect_time=true。

五 常见问题与排查

  • 报告目录非空导致失败:删除或更换 -o 目录后再生成。
  • 监听器导致 OOM:压测时不要使用 View Results Tree / Table Results 等占用内存的监听器,建议仅用于调试。
  • 结果文件被追加:多次运行时若未更换 .jtl 路径,数据会追加,图表可能出现“断点”;建议按时间戳或场景命名 result-YYYYMMDD-HHMMSS.jtl
  • 分布式压测:使用 -r 启动远程代理;必要时在 jmeter.properties 设置 server.rmi.ssl.disable=true 以简化连接。

0