JMeter 按小时记录结果
JMeter to record results on hourly basis
我有一个 JMeter
项目,其中有多个 GET
和 POST
请求和断言。我使用 Aggregate results
和 View results tre
e 听众,但其中 none 可以按小时存储结果。我尝试了 JMeterPlugins-Standard
和 JMeterPlugins-Extras
包以及 jp@gc - Graphs Generator
侦听器,但它们都使用聚合数据而不是每小时数据。所以我想获得每小时成功和失败的数量 requests/assertions,也许条形图最适合这个目的。
您可能想使用具有 --start-offset
和 --end-offset
参数的 Filter Results Tool,您可以将结果文件 "cut" 分成 "interesting" 块并绘制它们根据您的要求。
您可以使用 JMeter Plugins Manager
安装筛选结果工具
另请注意,根据 JMeter Best Practices,您应该
- Use as few Listeners as possible; if using the -l flag as above they can all be deleted or disabled.
- Don't use "View Results Tree" or "View Results in Table" listeners during the load test, use them only during scripting phase to debug your scripts.
您可以从 .jtl 结果文件中获取您需要的任何信息,您可以通过 -l
command-line argument
指定测试结果位置
我将建议一个非传统的设计级解决方案:使用小时(或日期和小时)动态命名您的采样器,以便每个小时名称都会更改,因此它们将出现在不同的类别中, 即:
该名称的代码是:
${__time(dd:hh,)} the rest of sampler name
这样的采样器在聚合报告中会以如下方式出现(这里我用minutes/seconds模拟了它,但是days/hours也会出现同样的情况,只是规模更大):
这种方法的优缺点:
很简单,当测试运行时,您可以按小时、分钟或任何其他时间片聚合任何内容,而不是在执行后分析。
不依赖于监听器,几乎可以与任何监听器或可视化器一起使用
如果你还想拥有整体统计数据,则需要对每个子类别进行汇总。所以它改变了数据,但它仍然可以相对容易地添加回原始数据。
在每个采样器之前计算 __time
从性能的角度来看不会完全被忽视,但我不认为它会给脚本增加可见的开销。
您可以在执行后通过正确聚合 JTL 或 CSV(无论您使用哪种)来获得相同的数据,因此它不会为您提供使用标准方法无法实现的任何内容
脚本需要修改才能实现。如果您有 100 个采样器,则需要一段时间。如果你想改回来...
要获得每小时的汇总结果,请添加到您的测试计划中 Generate Summary Results:
Generates a summary of the test run so far to the log file and/or standard output
根据您的需要 jmeter.properties 更新间隔,1 小时 3600 秒:
summariser.interval=3600
您将获得每小时请求的摘要。
你可以试试Jmeter backend Listener
。它集成了 Graphite 和 Influxdb。将结果存储在这些时间序列数据库中后,您可以在 Grafana 仪表板中显示结果。 Grafana 有自己的过滤功能,可以按小时、每月、每天等显示结果。
我有一个 JMeter
项目,其中有多个 GET
和 POST
请求和断言。我使用 Aggregate results
和 View results tre
e 听众,但其中 none 可以按小时存储结果。我尝试了 JMeterPlugins-Standard
和 JMeterPlugins-Extras
包以及 jp@gc - Graphs Generator
侦听器,但它们都使用聚合数据而不是每小时数据。所以我想获得每小时成功和失败的数量 requests/assertions,也许条形图最适合这个目的。
您可能想使用具有 --start-offset
和 --end-offset
参数的 Filter Results Tool,您可以将结果文件 "cut" 分成 "interesting" 块并绘制它们根据您的要求。
您可以使用 JMeter Plugins Manager
安装筛选结果工具另请注意,根据 JMeter Best Practices,您应该
- Use as few Listeners as possible; if using the -l flag as above they can all be deleted or disabled.
- Don't use "View Results Tree" or "View Results in Table" listeners during the load test, use them only during scripting phase to debug your scripts.
您可以从 .jtl 结果文件中获取您需要的任何信息,您可以通过 -l
command-line argument
我将建议一个非传统的设计级解决方案:使用小时(或日期和小时)动态命名您的采样器,以便每个小时名称都会更改,因此它们将出现在不同的类别中, 即:
该名称的代码是:
${__time(dd:hh,)} the rest of sampler name
这样的采样器在聚合报告中会以如下方式出现(这里我用minutes/seconds模拟了它,但是days/hours也会出现同样的情况,只是规模更大):
这种方法的优缺点:
很简单,当测试运行时,您可以按小时、分钟或任何其他时间片聚合任何内容,而不是在执行后分析。
不依赖于监听器,几乎可以与任何监听器或可视化器一起使用
如果你还想拥有整体统计数据,则需要对每个子类别进行汇总。所以它改变了数据,但它仍然可以相对容易地添加回原始数据。
在每个采样器之前计算
__time
从性能的角度来看不会完全被忽视,但我不认为它会给脚本增加可见的开销。您可以在执行后通过正确聚合 JTL 或 CSV(无论您使用哪种)来获得相同的数据,因此它不会为您提供使用标准方法无法实现的任何内容
脚本需要修改才能实现。如果您有 100 个采样器,则需要一段时间。如果你想改回来...
要获得每小时的汇总结果,请添加到您的测试计划中 Generate Summary Results:
Generates a summary of the test run so far to the log file and/or standard output
根据您的需要 jmeter.properties 更新间隔,1 小时 3600 秒:
summariser.interval=3600
您将获得每小时请求的摘要。
你可以试试Jmeter backend Listener
。它集成了 Graphite 和 Influxdb。将结果存储在这些时间序列数据库中后,您可以在 Grafana 仪表板中显示结果。 Grafana 有自己的过滤功能,可以按小时、每月、每天等显示结果。