首先,
计算QPS的公式参考:点击打开链接http://www.ha97.com/5095.html
QPS(TPS)= 并发数/平均响应时间
其次,
有了公式,下面来验证ab的结果,直接用这位老兄的:点击打开链接http://www.cnblogs.com/zengxiangzhan/archive/2012/12/07/2807141.html
ab -t 60 -c 100 http://192.168.0.10/
在60秒内发请求,一次100个请求。
开始计算:
并发100,总完成请求50000,所以 50000/100 = 500次。
第一个Time per request = Time taken for tests / 次数 = 36.596 / 500 = 0.073192 s = 73.192 ms
第二个Time per request = 第一个Time per request / 并发数 = 73.192ms / 100 = 0.732 ms
重点来了。。。
Requests per second = 并发 / 平均响应时间 = 100 / 0.073192s = 1366.267
其实,我是蒙的,虽然我用这套公式试验了别的请求不下10次,每次都是对的,哎,人帅没办法。
不明白的地方在于这个 50000/100 = 500次 是什么鬼? 看来有必要去研究一下ab的代码,有知道ab的源码哪里有的,请告诉我一个地址,谢谢了,虽然我估计我看不懂。。。
以上都是瞎猜的。。。。
附源码片段:
if (timetaken && done) {
printf("Requests per second: %.2f [#/sec] (mean)\n",
(double) done / timetaken);
printf("Time per request: %.3f [ms] (mean)\n",
(double) concurrency * timetaken * 1000 / done);
printf("Time per request: %.3f [ms] (mean, across all concurrent requests)\n",
(double) timetaken * 1000 / done);
printf("Transfer rate: %.2f [Kbytes/sec] received\n",
(double) totalread / 1024 / timetaken);
if (posting > 0) {
printf(" %.2f kb/s sent\n",
(double) totalposted / timetaken / 1024);
printf(" %.2f kb/s total\n",
(double) (totalread + totalposted) / timetaken / 1024);
}
}
地址: 点击打开链接https://github.com/CloudFundoo/ApacheBench-ab
Requests per second = 50000 / 36.596 = 1366.267
Time per request (1) = 100 * 36.596 * 1000 / 50000 = 0.073192 s = 73.192 ms
Time per request (2) = 36.596 * 1000 / 50000 = 0.732 ms