apache ベンチマークツール ab を使ってみる

先日の評価作業 の一環で、ab を使ったベンチマークを行ったので、そのメモ。

apache をパッケージからインストールすると ab が入っていないことがあるらしい。ab がどのパッケージに入っているかを知りたければ、
$ auto-apt search bin/ab
などとすれば、検索結果が表示される。auto-apt が入っていなければ、apt-get install auto-apt したあとに、auto-apt update してから。

bin/ab なんて検索条件だと、関係ないのがいっぱい出るのだが、
~$ auto-apt search bin/ab
usr/sbin/ab2 net/apache2-utils
usr/sbin/ab net/apache2-utils
てなかんじで、apache2 の場合は、apache2-utils に入っていることがわかる。こいつを入れておけば、ab が使えるようになる。

ab の使い方はオプションも引数も付けずにコマンドを打ってみれば確認できる。ベンチマークとして使う分には、-n (リクエスト数) と -c (同時リクエスト数) を指定するくらいで OK ぽい。-H で送出する HTTP リクエストに付加するヘッダ情報が追加できるので、-H 'Cookie: PHPSESSID=<適当なSID>' などとしてあげれば、セッション ID を固定したリクエストをゴリゴリ送出することもできる。

実行すると、こんな感じで測定結果が得られる。セッションハンドラの性能を見る分には、Requests per second とか Time per request が参考になるみたい。

~$ ab -n 500 -c 10 -H 'Cookie: PHPSESSID=tekitounasessionid' http://localhost/test.php
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) 1998-2002 The Apache Software Foundation, http://www.apache.org/

Benchmarking localhost (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Finished 500 requests


Server Software: Apache
Server Hostname: localhost
Server Port: 80

Document Path: /test.php
Document Length: 69 bytes

Concurrency Level: 10
Time taken for tests: 0.762895 seconds
Complete requests: 500
Failed requests: 0
Write errors: 0
Total transferred: 215931 bytes
HTML transferred: 34569 bytes
Requests per second: 655.40 [#/sec] (mean)
Time per request: 15.258 [ms] (mean)
Time per request: 1.526 [ms] (mean, across all concurrent requests)
Transfer rate: 275.27 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.0 0 0
Processing: 1 13 35.5 1 187
Waiting: 1 12 33.4 1 187
Total: 1 13 35.5 1 187

Percentage of the requests served within a certain time (ms)
50% 1
66% 1
75% 1
80% 2
90% 91
95% 104
98% 131
99% 161
100% 187 (longest request)