我试图根据以下参数根据jtl日志中的一些属性计算出吞吐量(数量请求/时间单位)的公式:
看一下时间戳我不完全确定它是指发送请求的时间还是收到响应的时间(我的主要困惑点在这里).看一下这些值,第一种选择似乎更有可能.所以假设这个,我提出以下内容:
Throughput = (NumRequests / (max(ts + t) - min(ts)) ) * 1000
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我,我是否正确吗?
更新(并感谢@BlackGaff的回复)
关键是,我需要执行我的测试,并收集结果在非GUI环境对一些自动化的过程,所以我真的不能使用总结报告(除非有一种方法可以在命令行中运行它).max&min的使用是尝试从一组请求中找到ts值(在同一测试中).此外,如果我将采样器配置为具有不同于0的斜升时段(因此负载是分布式的),则我得到的ts的数字是不同的.是的,正如您之前提到的,我正在有效地寻找第一个样本的startTime和最后一个样本的endTime之间的差异.除此之外,我在jmeter.properties中找到了一个参数:
# Put the start time stamp in logs instead of the end
#sampleresult.timestamp.start=true
Run Code Online (Sandbox Code Playgroud)
因此,根据此参数,我似乎也应该更改计算以获取开始和结束时间.
注意:我很好奇如何基于jtl文件计算这个,但如果有人需要从命令行获取这些数字,请尝试添加"生成摘要报告"监听器,并在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%)
Run Code Online (Sandbox Code Playgroud)
可能更容易在Jmeter的Aggregate报告中打开JTL日志,它将为您计算吞吐量,然后将其保存回来?
但是,就问题而言.
目前,您的公式具有时间/请求单位.鉴于您需要请求/时间,您的公式应为:
Throughput = (NumRequests / (max(ts + t) - min(ts) ) ) * 1000
Run Code Online (Sandbox Code Playgroud)
我不完全确定你为什么使用max和min,因为你只提供一个值,这些函数从一个集合中返回最大值/最小值.鉴于TS是相同的值,使用EXCEL,您最终得到:
Throughput = (NumRequests/t*1000)
Run Code Online (Sandbox Code Playgroud)
我相信你真正想要的是第一个样本的startTime和最后一个样本的endTime之间的区别)
根据词汇表:
吞吐量计算为请求/时间单位.时间从第一个样品的开始到最后一个样品的结束计算.这包括样本之间的任何间隔,因为它应该代表服务器上的负载.公式为:吞吐量=(请求数)/(总时间).
给出最终公式:
endTime = lastSampleStartTime + lastSampleLoadTime
startTime = firstSampleStartTime
converstion = unit time conversion value
Throughput = Numrequests / ((endTime - startTime)*conversion)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9040 次 |
最近记录: |