43

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

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

他们每个人是如何计算的?

样本输出:

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

为什么差别很大?

4

2 回答 2

29

这是一个ab的测试结果的例子。我发出1000 个请求,其中包含3 个并发请求。

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 毫秒

如果我们将25734.375 ms除以1000,您将得到25.734 [ms],这正是Time per request(平均,跨所有并发请求)字段的值。

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

让我给你一个简单的例子。

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

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

希望你能理解。:)

于 2016-03-30T14:16:46.560 回答
21

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

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

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

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

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

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

于 2013-07-14T20:19:21.347 回答