注意
Apache Benchの利用方法についての解説記事ではありません。
目的
Apache Benchの結果にある2つのTime per requestの意味を自分なりに理解する。
(間違いなどありましたら、ご指摘ください。)
結論
- 一つ目のTime per request(mean)は、同時実行したリクエストの平均処理時間
- 二つ目のTime per request(mean, across all concurrent requests)は、1リクエストの平均処理時間
背景
- Apache Benchの結果にある一つ目のTime per requestが何を意味しているのか分からない。
公式サイトより
Time per request
The average time spent per request. The first value is calculated with the formula concurrency * timetaken * 1000 / done while the second value is calculated with the formula timetaken * 1000 / done
訳すと、
一つ目の値の公式は、「同時実行数 * 全てのリクエストが完了するのにかかった時間 * 1000 / 処理したリクエスト数」
二つ目の値の公式は、「全てのリクエストが完了するのにかかった時間 * 1000 / 処理したリクエスト数」
ということで、
一つ目の値は、二つ目の値に 同時実行数 をかけた値ということになる。
例えば
総リクエスト数100、同時実行数10で以下の結果が得られたとする。(関係のない項目は省略)
Concurrency Level: 10 # 同時実行数
Time taken for tests: 12.029 seconds # 全てのリクエストが完了するのにかかった時間
Complete requests: 100 # 処理したリクエスト数
Failed requests: 0
Requests per second: 8.31 [#/sec] (mean)
Time per request: 1202.947 [ms] (mean)
Time per request: 120.295 [ms] (mean, across all concurrent requests)
二つ目のTime per requestは公式に基づき、 12.029 sec * 1000 / 100 で 120.295 ms。
一つ目のTime per requestは上記の値に同時実行数をかけたものになるので、 120.295 * 10 で 1202.947
※ 実際の計算は一つ目からされていると思いますが、今回は理解のために二つ目から計算しています。
良く分からなかったのは
Time per request を 1リクエストにかかった時間と解釈していたから分からなかった。
最後に
Time per concurrent request とかの方が分かりやすいと思う。
参考サイト
- eAcceleratorによるPHP高速化の効果 – No:441 – Linuxで自宅サーバ構築(新森からの雑記) : http://www.uetyi.com/server-const/linux-server/entry-441.html
追記(2016/06/10)
同時実行数といっているのに、1リクエストの平均処理時間に同時実行数をかけた値になっているのが良く分からない。
これだと同時実行数に指定したリクエスト数をシーケンシャルに実行した場合にかかる時間になるだけではないのかな。
うーん・・・よくわからない。