我有一个JMeter
项目,其中包含多个请求GET
和POST
断言。我使用Aggregate results
和View results tre
e 侦听器,但这些都不能按小时存储结果。我尝试了打包和JMeterPlugins-Standard
监听器,但它们都使用聚合数据而不是每小时数据。所以我想每小时获得成功和失败的请求/断言的数量,也许条形图最适合这个目的。JMeterPlugins-Extras
jp@gc - Graphs Generator
4 回答
我将建议一个非常规的设计级解决方案:使用小时(或日期和小时)动态命名您的采样器,以便每个小时名称都会更改,因此它们将出现在不同的类别中,即:
此类名称的代码是:
${__time(dd:hh,)} the rest of sampler name
这样的采样器将在聚合报告中以下列方式出现(这里我用分钟/秒模拟它,但同样会在天/小时发生,只是规模更大):
这种方法的优缺点:
很简单,您可以在测试运行时按小时、分钟或任何其他时间片聚合任何内容,而不是在执行后进行分析。
不依赖于监听器,几乎可以与任何监听器或可视化器一起使用
如果您还想获得整体统计数据,则需要总结每个子类别。所以它改变了数据,但它仍然可以相对容易地添加回原始数据。
从性能的角度来看,在每个采样器之前进行计算
__time
不会完全被忽视,但我认为它不会给脚本增加可见的开销。您可以通过在执行后正确聚合 JTL 或 CSV(无论您使用哪个)来获得相同的数据,因此它不会为您提供使用标准方法无法实现的任何内容
脚本需要更改才能实现。如果您有 100 多个采样器,则需要一段时间。如果你想改回来...
您可能想要使用具有和参数的过滤结果工具,您可以将结果文件“剪切”成“有趣”的部分并根据您的要求绘制它们。--start-offset
--end-offset
您可以使用JMeter 插件管理器安装过滤结果工具
另请注意,根据JMeter 最佳实践,您应该
- 使用尽可能少的 Listeners;如果使用上面的 -l 标志,它们都可以被删除或禁用。
- 不要在负载测试期间使用“查看结果树”或“在表中查看结果”侦听器,仅在脚本编写阶段使用它们来调试脚本。
您可以从 .jtl 结果文件中获取所需的任何信息,您可以通过-l
命令行参数指定测试结果位置
要获得每小时汇总的结果,请添加到您的测试计划Generate Summary Results:
在日志文件和/或标准输出中生成到目前为止的测试运行摘要
根据您的需要更新 jmeter.properties 中的间隔 1 小时 3600 秒:
summariser.interval=3600
您将获得每小时请求的摘要。
您可以尝试使用Jmeter backend Listener
. 它与石墨和 Influxdb 集成。将结果存储在这些时间序列数据库中后,您可以在 Grafana 仪表板中显示结果。Grafana 有自己的过滤功能,可以按小时、按月、按天等显示结果。