当前位置: 首页 > news >正文

第十二篇:《JMeter监听器与实时监控:聚合报告、图形结果、后端监听器》

压测脚本运行后,如何读取结果、分析性能瓶颈?JMeter 提供了丰富的监听器用于展示数据。然而默认的监听器在 GUI 模式下会消耗大量内存,不适合长时间压测。本文将系统讲解常用监听器的含义,以及如何通过后端监听器将数据发送到 InfluxDB + Grafana 实现实时监控。

一、常用监听器及其关键指标

1.1 聚合报告(Aggregate Report)
最常用的监听器,提供以下关键指标:

解读示例:
平均响应时间 200ms,90% 线 500ms,说明有 10% 的请求响应较慢,需进一步分析。

1.2 汇总报告(Summary Report)
与聚合报告类似,但更简洁,适合快速查看。

1.3 图形结果(Graph Results)
以折线图展示:

样本数(绿色)

平均响应时间(蓝色)

中位数(红色)

吞吐量(绿色细线)
但 GUI 渲染开销大,不推荐在压测中使用。

1.4 查看结果树(View Results Tree)
仅用于调试,压测时必须关闭(否则内存爆炸)。

1.5 后端监听器(Backend Listener)
这是生产环境监控的关键。它将实时数据发送给时序数据库(InfluxDB),再由 Grafana 可视化展示。

二、实时监控方案:InfluxDB + Grafana

2.1 架构图
text
JMeter (Backend Listener) → InfluxDB → Grafana → 浏览器仪表盘
2.2 部署 InfluxDB(使用 Docker 最简单)

dockerrun-d--nameinfluxdb-p8086:8086 influxdb:1.8

创建数据库:

dockerexec-itinfluxdb influx>CREATE DATABASE jmeter>SHOW DATABASES

2.3 配置 JMeter 后端监听器
右键测试计划 → Add → Listener → Backend Listener

配置项(以 InfluxDB 为例):

influxdb.url:http://<influxdb_ip>:8086/write?db=jmeter

application:myapp(自定义,用于区分不同项目)

measurement:jmeter(表名)

summaryOnly:false(是否只发送汇总数据)

可选的参数:

samplersRegex:可以只发送匹配正则的取样器,用 .* 发送全部。

2.4 启动 Grafana

dockerrun-d--namegrafana-p3000:3000 grafana/grafana

访问 http://localhost:3000,默认账号 admin/admin。

2.5 配置 Grafana 数据源
添加 Data Source → InfluxDB

HTTP URL:http://<influxdb_ip>:8086

Database:jmeter

保存测试

2.6 导入 JMeter 仪表盘模板
Grafana 官方社区有现成的 JMeter 仪表盘模板(ID:5496 或 11550)。
导入方式:+ → Import → 输入模板 ID → 选择数据源。

模板通常会展示:

实时 TPS(每秒请求数)

响应时间分位值(p50, p90, p99)

错误率

活跃线程数

三、无 GUI 模式下的数据收集与报告

3.1 生成 CSV 结果文件
命令行执行时,通过 -l 生成 JTL 文件(CSV 格式):

jmeter-n-ttest.jmx-lresult.csv-e-oreport/

CSV 包含每个请求的详细数据,可导入 Excel 或分析工具。

3.2 生成 HTML 报告
-e -o 参数生成完整的 HTML 报告。报告包含:

统计分析(与聚合报告类似)

图表:响应时间随时间变化、TPS 曲线、响应时间分布图等

3.3 自定义 JTL 字段
编辑 bin/user.properties,指定保存哪些字段,减小文件体积:

properties
jmeter.save.saveservice.output_format=csv
jmeter.save.saveservice.response_code=true
jmeter.save.saveservice.response_message=false
jmeter.save.saveservice.successful=true
jmeter.save.saveservice.thread_name=true
jmeter.save.saveservice.time=true
jmeter.save.saveservice.latency=true
jmeter.save.saveservice.connect_time=true
jmeter.save.saveservice.timestamp=true

四、分析实战:从报告定位性能问题

假设运行了负载测试,从聚合报告发现:

并发 100 时,平均响应时间 200ms,错误率 0%

并发 150 时,平均响应时间 800ms,错误率 5%

并发 200 时,平均响应时间 2000ms,错误率 20%

分析:

系统在 100-150 并发之间出现了性能拐点,可能是数据库连接池、线程池、或网络带宽到达上限。

错误率升高说明部分请求超时或被拒绝,应检查后端日志。

应对:

与开发配合,使用 APM 工具(如 SkyWalking)定位慢方法。

调整服务器配置(增加连接数、优化 SQL)。

五、压测最佳实践

预热:正式压测前先小负载运行一段时间,让 JIT 编译、缓存生效。

监控资源:压测同时监控服务器 CPU、内存、磁盘 I/O、网络(使用 nmon、Prometheus+Node Exporter)。

多次运行:每次改变并发后,先停止上次测试,清理服务器状态,避免累积影响。

保存原始数据:保留 JTL 文件,用于后续分析对比。

不要使用 GUI 模式压测:GUI 本身消耗大量资源,结果不准确。

六、总结

本文核心:

聚合报告的关键指标及其含义

为什么压测时要关闭查看结果树

使用 Backend Listener + InfluxDB + Grafana 实现实时监控

命令行生成 HTML 报告

如何从报告中初步分析性能瓶颈

http://www.jsqmd.com/news/818766/

相关文章:

  • SNN与PRC融合的sEMG手势识别技术解析
  • 【GVA】商业级综合后台的整体技术生态和功能拼图
  • 电脑公司的维修系统|基于java和小程序的电脑公司的维修平台设计与实现(源码+数据库+文档)
  • PCF8575 I2C GPIO扩展器:低成本解决嵌入式开发引脚不足难题
  • 思源宋体TTF:7种字重免费下载与完整使用指南终极教程
  • 机器学习 总结1
  • DeepSeek之后,AI+智能问诊+互联网医院系统会怎么发展?
  • Axure RP 8 安装流程以及视频教程(附绿色版)
  • 千问 LeetCode 2382. 删除操作后的最大子段和 public long[] maximumSegmentSum(int[] nums, int[] removeQueries)
  • MAC地址失效下基于射频指纹的WiFi设备识别技术
  • Claude与LSP融合:打造深度理解代码的智能编程助手
  • 使用Taotoken后API调用延迟与稳定性可观测性体验
  • 开源健身数据平台ZWISERFIT:自托管、全栈技术栈与数据隐私实践
  • Uniapp小程序二手商城系统 带协同过滤推荐算法
  • 消防通道门基础知识全面解析
  • Python +Vue实战:从零搭建中国电影票房数据可视化分析系统(附完整源码)
  • 2026年Q2无锡注册资金变更服务选型全维度技术指南:无锡变更公司名字/无锡变更公司抬头/无锡地址变更/无锡增资/选择指南 - 优质品牌商家
  • AI赋能代码审计:grits-audit项目实战与LLM应用解析
  • B站缓存视频转换秘籍:3分钟解锁m4s转MP4的终极方案
  • EPUB转有声书:基于Python的自动化实现与TTS技术实践
  • OpenClaw:重塑人机协作的开源 AI 智能体
  • 【LangChain】 Runnable 链式调用深度解析:从 `itemgetter` 到 `RunnableLambda`
  • 2026Q2不锈钢灭火器箱技术指南:四川灭火器厂家、四川灭火器回收、四川灭火器年检、四川灭火器灌装、四川灭火器维修选择指南 - 优质品牌商家
  • 如何抓取某音视频的互动数据
  • claw-mesh:参数化设计如何革新3D打印机械爪的开发流程
  • 从Harvest项目看数据采集框架的工程化设计与实战实现
  • 别再只调BERT了!用PyTorch从零搭建BiLSTM-CRF中文NER模型(附完整代码与CLUE数据集实战)
  • 深入解析Java基础之基础
  • MIMO OFDM系统中的波束成形技术与定位感知优化
  • 别再一个个点菜单了!MathType 7.4.8快捷键保姆级清单,效率翻倍不是梦