JMeter中借助Server Timing API实现响应时间指标可视化方案咨询
JMeter完全支持这类自定义指标的提取和可视化,你提到的JSR223组件是可行的实现方案,具体操作如下:
操作步骤
1. 提取自定义耗时指标
在需要采集指标的HTTP采样器下添加JSR223后置处理器,选择Groovy作为脚本语言,填入以下代码:
// 从响应结果中获取Server-Timing响应头 def serverTimingHeader = prev.getResponseHeader("Server-Timing") if (serverTimingHeader) { // 正则匹配数据库查询耗时 def dbTimeMatcher = (serverTimingHeader =~ /db;dur=([\d.]+)/) if (dbTimeMatcher.find()) { def dbQueryDur = dbTimeMatcher[0][1] as double // 将数据库耗时存为JMeter变量,后续可直接调用 vars.put("db_query_duration", dbQueryDur as String) // 可选:将耗时写入采样标签,方便快速排查 prev.setSampleLabel("${prev.getSampleLabel()}|db耗时:${dbQueryDur.round()}ms") } } // 接口总响应时间直接从JMeter内置对象获取,无需额外提取 def totalResponseDur = prev.getTime() vars.put("total_response_duration", totalResponseDur as String)
2. 可视化展示方案
- 方案一:实时可视化(适合长时间负载测试)
搭配后端监听器(Backend Listener)+时序数据库+可视化面板栈,将提取到的db_query_duration和内置的总响应时间作为指标上传到时序数据库,在可视化面板中分别配置两类指标的折线图、百分位统计、误差分布等面板,支持测试过程中实时查看指标变化。 - 方案二:离线HTML报告(适合测试结束后汇总分析)
修改JMeter安装目录下的bin/user.properties配置文件,添加自定义变量统计规则,执行测试时指定生成HTML报告,报告会自动包含数据库耗时的独立统计图表、均值、90百分位、99百分位等核心数据。 - 方案三:本地调试简易展示
直接添加「汇总报告」「聚合报告」等内置监听器,在监听器配置中添加db_query_duration为显示列,即可在测试运行过程中直接查看两类耗时的实时统计值。
提示:如果响应头中存在多个自定义Server-Timing指标,只需调整正则匹配规则,将不同指标分别存为独立变量,即可实现多维度自定义指标的统计与展示。
内容的提问来源于stack exchange,提问作者Antonio Gamiz Delgado
相关产品推荐
相关产品推荐

