Apache Bench:所有并发请求的平均值与均值

时间:2013-03-31 14:52:44

标签: apachebench

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

  • 每次请求的时间(平均值)
  • 每个请求的时间(意味着,跨所有并发请求)

他们每个人的计算方式如何?

示例输出:

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

为什么会有很大差异?

2 个答案:

答案 0 :(得分:18)

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

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

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

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

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

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

答案 1 :(得分:17)

以下是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

如您所见,每个请求有两个时间字段。

  • 每次请求的时间(平均值)
  • 每个请求的时间(意味着,跨所有并发请求)

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

如果我们将 25734.375 ms 除以 1000 ,则会得到 25.734 [ms] ,这与每次请求的时间完全相同(均值) ,跨所有并发请求)字段的值。

对于每次请求的时间(平均值),值为 77.203 [ms] 。该值比每个请求的时间(平均值,跨所有并发请求)稍长。这是因为(平均值)按每个特定请求计算并计算它的平均时间。

让我举个简单的例子。

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

  • 每个请求的时间(平均值)=(40 + 50 + 30)/ 3 = 40ms
  • 每个请求的时间(平均值,跨所有并发请求)= 90/3 = 30ms
希望你能理解。 :)