Performance ApacheBench中有无并发请求的结果不同

Performance ApacheBench中有无并发请求的结果不同,performance,performance-testing,apachebench,Performance,Performance Testing,Apachebench,我试图在我的生产服务器上获得一些关于响应时间的统计数据 调用ab-n100-c1时http://example.com/search?q=something“我得到以下结果: Connection Times (ms) min mean[+/-sd] median max Connect: 24 25 0.7 24 29 Processing: 526 874 116.1 868 1263 Waiting:

我试图在我的生产服务器上获得一些关于响应时间的统计数据

调用
ab-n100-c1时http://example.com/search?q=something“
我得到以下结果:

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       24   25   0.7     24      29
Processing:   526  874 116.1    868    1263
Waiting:      313  608 105.1    596    1032
Total:        552  898 116.1    892    1288
但是当我调用
ab-n100-c3“http://example.com/search?q=something“
结果更糟:

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       24   25   0.8     25      30
Processing:   898 1872 1065.6   1689    8114
Waiting:      654 1410 765.5   1299    7821
Total:        923 1897 1065.5   1714    8138
考虑到该站点正在生产中,所以除了我的请求之外还有其他请求,我无法解释为什么没有并发的调用要比即使是小并发的调用快得多


有什么建议吗?

如果您的并发度为1,这意味着您告诉AB使用一个线程,以尽可能快的速度点击此URL。值-c3告诉AB做同样的事情,但是使用3个线程,这可能会导致更大的调用量,在您的情况下,这似乎导致事情变慢。(注意AB是单线程的,所以实际上并不使用多个os线程,但类比仍然成立。)

这有点像在收费站有更多的车道,一条车道只能处理速度如此之快的车辆,但有三条车道,你将获得更多的吞吐量。但是,不管你有多少车道,隧道的宽度,汽车在收费站后必须通过,也会影响吞吐量,这可能就是你所看到的

一般来说,更好的负载测试方法是确定应用程序需要支持的流量级别,然后设计一个测试来生成这一级别的吞吐量,而不是更多。像AB一样以最快的速度运行线程往往会使任何类型的受控测试变得困难。JMeter更好


另外,您可能需要考虑为他的这类事情设置一个测试服务器,风险较小……

如果您的并发性为1,这意味着您要告诉AB使用一个线程,以尽可能快的速度点击这个URL。值-c3告诉AB做同样的事情,但是使用3个线程,这可能会导致更大的调用量,在您的情况下,这似乎导致事情变慢。(注意AB是单线程的,所以实际上并不使用多个os线程,但类比仍然成立。)

这有点像在收费站有更多的车道,一条车道只能处理速度如此之快的车辆,但有三条车道,你将获得更多的吞吐量。但是,不管你有多少车道,隧道的宽度,汽车在收费站后必须通过,也会影响吞吐量,这可能就是你所看到的

一般来说,更好的负载测试方法是确定应用程序需要支持的流量级别,然后设计一个测试来生成这一级别的吞吐量,而不是更多。像AB一样以最快的速度运行线程往往会使任何类型的受控测试变得困难。JMeter更好

另外,您可能想考虑为他的这类事情设置一个测试服务器,风险更低