我正在使用JMeter客户端来测试某个服务器上某个工作负载(PHP + MySQL,1页)的吞吐量。基本上我正在进行“容量测试”,随着时间的推移越来越多的线程。
我安装了“统计聚合报告”JMeter插件,这是结果(忽略“响应时间”行):
同时我使用“Simple Data Writer”监听器来编写日志文件(“JMeter.csv”)。然后我尝试“手动”计算每一秒测试的吞吐量。
“JMeter.csv”的每一行都有这样的格式:
timestamp elaspedtime responsecode success bytes
1385731020607 42 200 true 325
... ... ... ... ...
时间戳是指客户端发出请求的时间,而不是服务器提供请求的时间。所以我只是这样做: totaltime = timestamp + elapsedtime 。
在下一步中,我将总时间转换为日期格式,例如: 13:17:01 。
我有超过14K的样本,使用Excel我能够快速完成。
然后我计算了每秒钟的样本量。例如:
totaltime samples (requestsServed/second)
13:17:01 204
13:17:02 297
... ...
当我尝试绘制结果时,我获得了以下图形:
您可以注意到它与第一张图片有很大不同。
鉴于第一张图形是正确的,我的公式/程序计算吞吐量的错误是什么?
答案 0 :(得分:0)
事实证明,这个插件正在绘制一些我不知道的东西......我尝试了很多次,而且我的考虑实际上是正确的。小心这个插件(或检查它的源代码)。
答案 1 :(得分:0)
可以在Jmeter摘要报告中查看吞吐量,您可以通过在“摘要报告”中将测试结果文件保存在xml文件中来计算。
Throughput = Number of samples/(Max (ts+t) - Min ts)*1000
Throughput = (Number of samples/The difference between Maximum and minimum response time)*1000
通过此公式,您可以在摘要报告中计算每个http请求的吞吐量。
示例:
Max Response Time = 1485538701633+569 = 1485538702202
Min Response Time = 1485538143112
Throughput = (2/1485538702202-1485538143112)*1000
Throughput = (2/1505) *1000
Throughput = 0.00132890*1000
Throughput = 1.3/sec
您可以通过示例阅读更多内容(http://www.wikishown.com/how-to-calculate-throughput-in-jmeter/),我对吞吐量计算有了一个很好的了解。