从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 + lastSampleLoadTime

startTime = firstSampleStartTime

converstion = unit time conversion value

Throughput = Numrequests / ((endTime - startTime)*conversion)

以上是 从Jmeter jtl日志文件计算吞吐量 的全部内容, 来源链接: utcz.com/qa/416239.html

回到顶部