【问题标题】:Different results in ApacheBench with and without concurrent requests有和没有并发请求的 ApacheBench 中的不同结果
【发布时间】:2012-06-06 14:55:25
【问题描述】:

我正在尝试在我的生产服务器上获取一些有关响应时间的统计信息。

当调用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

考虑到该站点正在生产中,所以除了我的请求之外还有其他请求,我无法解释为什么没有并发的调用比即使是小并发的调用要快得多。

有什么建议吗?

【问题讨论】:

    标签: performance performance-testing apachebench


    【解决方案1】:

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

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

    作为一般说明,更好的负载测试方法是确定您的应用需要能够支持的流量级别,然后设计一个测试来生成此级别的吞吐量,仅此而已.像 AB 一样尽可能快地运行线程往往会使任何类型的受控测试变得困难。 JMeter 更好。

    另外,您可能想考虑为他的事情设置一个测试服务器,风险较小......

    【讨论】:

      猜你喜欢
      • 2018-07-30
      • 1970-01-01
      • 2014-08-17
      • 1970-01-01
      • 1970-01-01
      • 2010-12-03
      • 2019-03-21
      • 1970-01-01
      • 2019-04-17
      相关资源
      最近更新 更多