【问题标题】:Apache Bench: Mean vs Mean across all concurrent requestsApache Bench:所有并发请求的平均值与平均值
【发布时间】:2013-03-21 18:34:21
【问题描述】:

这两个字段有什么区别? :

  • 每个请求的时间(平均值)
  • 每个请求的时间(平均所有并发请求)

它们是如何计算的?

样本输出:

Time per request:       3953.446 [ms] (mean)
Time per request:       39.534 [ms] (mean, across all concurrent requests)

为什么差别这么大?

【问题讨论】:

标签: apachebench


【解决方案1】:

这是一个 ab 测试结果的示例。我用 3 个并发请求发出 1000 个请求。

C:\>ab -d -e a.csv -v 1 -n 1000 -c 3 http://www.example.com/index.aspx
This is ApacheBench, Version 2.0.41-dev <$Revision: 1.121.2.12 $> apache-2.0
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking www.m-taoyuan.tw (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Finished 1000 requests


Server Software:        Microsoft-IIS/6.0
Server Hostname:        www.m-taoyuan.tw
Server Port:            80

Document Path:          /index.aspx
Document Length:        25986 bytes

Concurrency Level:      3
Time taken for tests:   25.734375 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      26372000 bytes
HTML transferred:       25986000 bytes
Requests per second:    38.86 [#/sec] (mean)
Time per request:       77.203 [ms] (mean)
Time per request:       25.734 [ms] (mean, across all concurrent requests)
Transfer rate:          1000.72 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1   4.4      0      15
Processing:    62   75   9.1     78     109
Waiting:       46   64   8.0     62     109
Total:         62   76   9.3     78     109

如您所见,有两个 Time per request 字段。

  • 每个请求的时间(平均值)
  • 每个请求的时间(平均所有并发请求)

请先检查测试时间字段。该值为 25.734375 秒,即 25734.375 毫秒

如果我们将 25734.375 毫秒 除以 1000,您会得到 25.734 [ms],这正是 每个请求的时间(平均,跨所有并发请求)字段的值。

对于每个请求的时间(平均值),该值为 77.203 [ms]。该值略长于每个请求的时间(平均所有并发请求)。那是因为(平均值)被每个特定请求计算并计算它的平均时间。

让我举一个简单的例子。

假设我们使用 3 个并发连接发出 3 个请求。 测试时间将是 90ms,每个请求是 40ms、50ms、30ms。那么这两个Time per request的价值是多少?

  • 每个请求的时间(平均值)= ( 40 + 50 + 30 ) / 3 = 40ms
  • 每个请求的时间(平均,所有并发请求)= 90 / 3 = 30ms

希望你能理解。 :)

【讨论】:

  • 我正在寻找类似问题的答案。你是如何得出第二个方程 90/3 的?
  • @SanjayAmin 这是方程式。 “如何”是什么意思?
【解决方案2】:

查看您的输入会有所帮助,但是,我相信输出会告诉您执行并发请求不会节省时间。

每个请求的时间(平均值)告诉您处理一组并发请求所花费的平均时间。

每个请求的时间(平均所有并发请求)告诉您一个单个请求自行处理所花费的平均时间。

如果您同时处理 100 个请求,则需要 3953.446 毫秒。

如果您单独处理它们,则需要 39.534 毫秒 * 100 = 3953.4 毫秒

同一个号码。执行并发请求不会节省时间(至少对于您测试的请求总数而言)。

【讨论】:

  • 我看不出并发请求如何导致更快的单个请求。每个请求的时间(平均所有并发请求)只告诉我处理并发请求的效率。
猜你喜欢
  • 2022-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
  • 2012-10-30
  • 2021-03-25
相关资源
最近更新 更多