从Jmeter jtl日志文件计算吞吐量
我试图给出一个公式,该公式基于jtl日志中基于以下参数的一些属性来计算吞吐量(请求数/时间单位):
- 时间戳(ts)
- 时间(t)
- 总请求数
看一下时间戳,我不确定是指请求发送或接收响应的时间(我主要的困惑点)。看一下这些值,第一种选择似乎更有可能。因此假设如此,我得出以下结论:
Throughput = (NumRequests / (max(ts + t) - min(ts)) ) * 1000
谁能告诉我我是否正确?
更新(感谢@BlackGaff的回复)
关键是我需要在非GUI环境中为一些自动化流程执行测试并收集结果,因此我不能真正使用Aggregate
Report(除非有一种方法可以从命令行运行它)。使用max&min是尝试从一组请求(在同一测试中)中找到ts值的尝试。另外,如果我将采样器配置为具有一个不等于0的上升周期(因此负载是分布式的),则我得到的ts的数字是不同的。是的,正如您之前已经提到的,我正在有效地寻找第一个样本的startTime和最后一个样本的endTime之间的差异。除此之外,我在jmeter.properties中找到了一个参数:
# Put the start time stamp in logs instead of the end#sampleresult.timestamp.start=true
因此,根据该参数,我似乎还应该更改计算以获取开始时间和结束时间。
注意:我很好奇如何基于jtl文件进行计算,但是如果有人需要从命令行获取这些数字,请尝试添加“ Generate Summary
Report”侦听器,并且在jmeter日志中您将获得类似于以下内容的行在执行结束时执行以下操作:
2011/03/10 22:31:42 INFO - jmeter.reporters.Summariser: Generate Summary Results = 200 in 9.8s = 20.5/s Avg: 95 Min: 75 Max: 315 Err: 0 (0.00%)
回答:
在Jmeter的“聚合”报告中打开JTL日志可能会更容易,它将为您计算吞吐量,然后将其保存回来?
但是,关于这个问题。
当前,您的公式具有时间单位/请求。给定您想要的请求/时间,您的公式应为:
Throughput = (NumRequests / (max(ts + t) - min(ts) ) ) * 1000
我不完全确定为什么要使用max和min,因为您只提供一个值,而这些函数从一组值中返回max / min。给定TS是相同的值,使用EXCEL,您最终得到:
Throughput = (NumRequests/t*1000)
我相信您真正想要的是第一个样本的startTime和最后一个样本的endTime之间的差异)
根据词汇表:
吞吐量按请求/时间单位计算。从第一个样本的开始到最后一个样本的结束计算时间。这包括样本之间的任何间隔,因为它应该代表服务器上的负载。公式为:吞吐量=(请求数)/(总时间)。
endTime = lastSampleStartTime + lastSampleLoadTimestartTime = firstSampleStartTime
converstion = unit time conversion value
Throughput = Numrequests / ((endTime - startTime)*conversion)
以上是 从Jmeter jtl日志文件计算吞吐量 的全部内容, 来源链接: utcz.com/qa/416239.html