web-dev-qa-db-ja.com

Apacheベンチ:すべての同時リクエストの平均と平均

これら2つのフィールドの違いは何ですか? :

  • リクエストあたりの時間(平均)
  • リクエストあたりの時間(平均、すべての同時リクエスト全体)

それぞれはどのように計算されますか?

サンプル出力:

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

なぜ大きな違いがあるのですか?

35
Omar S.

これはabのテスト結果の例です。 10リクエストを同時リクエストで行います。

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

ご覧のとおり、2つのリクエストあたりの時間フィールドがあります。

  • リクエストあたりの時間(平均)
  • リクエストあたりの時間(平均、すべての同時リクエスト全体)

最初にテストにかかる時間フィールドを確認してください。値は25.734375秒、つまり25734.375 msです。

25734.375 ms10で割ると、25.734 [ms]になります。これは、正確にリクエストあたりの時間(平均、全体すべての同時リクエスト)フィールドの値。

リクエストあたりの時間(平均)の場合、値は77.203 [ms]です。値はリクエストあたりの時間(平均、すべての同時リクエスト全体)より少し長くなります。これは、(平均)が特定のリクエストごとにカウントされ、平均時間を計算するためです。

簡単な例を挙げましょう。

同時接続でリクエストを行うと仮定します。 テストにかかる時間90msになり、各リクエストは40ms、50ms、30msになります。では、これら2つの値は何ですかリクエストあたりの時間

  • リクエストあたりの時間(平均)=(40 + 50 + 30)/ 3 = 40ms
  • リクエストあたりの時間(平均、すべての同時リクエスト全体)= 90/3 = 30ms

あなたが理解することを願って。 :)

20
Will Huang

入力を確認することは役に立ちますが、出力は、同時要求を実行するための時間の節約がないことを示していると思います。

リクエストあたりの時間(平均)concurrentグループのリクエストの処理にかかった平均時間を示します。

リクエストあたりの時間(平均、すべての同時リクエスト全体)singleリクエストにかかった平均時間を示します単独で処理します。

100個のリクエストを同時に処理した場合、3953.446ミリ秒かかりました。

それらを個別に処理した場合、39.534ms * 100 = 3953.4msかかります

同じ番号。同時リクエストを実行することによる時間の節約はありません(少なくともテストしたリクエストの総数について)。

19
swmcdonnell