Apache Bench で性能測定だ

Apache に付属しているベンチマークソフトを使ってみました。

Apacheには、標準で「ab」(Apache Bench) というツールが付属しています。
同時接続数とリクエスト数とURLを指定すれば、性能が測定できます。

ab コマンドによって、リクエストを発生させ、接続時間・処理時間・待ち時間などの統計を取得することができます。

例えば、同時接続数が 100で、リクエスト数 1,000 になるまで、http://example.com/index.html にアクセスするならば

ab -n 1000 -c 100 http://example.com/index.html



認証が必要なページには、-A オプションを使用します。

-n 数値:テストで発行するリクエストの回数を指定
-c 数値:テストで同時に発行するリクエストの数を指定
-A ユーザ名:パスワード
:ベーシック認証に必要なユーザ情報を指定

ただし、ab は単一ファイルへのリクエストしかできないので、画像ファイルなどのアクセスが発生する実環境とは違う点は考慮する必要があります。
下記のような結果になりました。

# ab -n 1000 -c 100 http://example.com/index.html
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.121.2.1 $>
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
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Finished 1000 requests


Server Software: Apache/2.0.46
Server Hostname: hoge.example.com
Server Port: 80

Document Path: /index.html
Document Length: 286 bytes

Concurrency Level: 100
Time taken for tests: 0.260966 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Non-2xx responses: 1000
Total transferred: 467000 bytes
HTML transferred: 286000 bytes
Requests per second: 3831.92 [#/sec] (mean)
Time per request: 26.097 [ms] (mean)
Time per request: 0.261 [ms] (mean, across all concurrent requests)
Transfer rate: 1747.35 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.0 0 0
Processing: 9 23 3.4 25 26
Waiting: 5 22 3.6 23 26
Total: 9 23 3.4 25 26

Percentage of the requests served within a certain time (ms)
50% 25
66% 25
75% 25
80% 25
90% 26
95% 26
98% 26
99% 26
100% 26 (longest request)


1リクエスト当たり 0.26 ミリ秒、1秒間に処理できるリクエスト数が 3831 という結果になりました。当然、静的なコンテンツなのでさほど負荷がかからないので好結果となりました。

結果の読み方ですが、

まずリクエストの成否(Complete requestsとFailed requests)を見てみます。
リクエストがすべて成功していればいいのですが、一部が失敗しているようならWebサーバの処理が追い付いていないと判断できます。同時接続数の限界を超えている可能性があります。


Complete requests: 1000
Failed requests: 0



次に1秒間に処理されたリクエスト数(Requests per second)を見てみましょう。1秒間にどれだけ処理できたかがわかります。

Requests per second: 3831.92 [#/sec] (mean)
Time per request: 0.261 [ms] (mean, across all concurrent requests)



接続時間・処理時間・待ち時間の内訳(Connect/Processing/Waiting)は、測定したリクエスト全体でのばらつきやリクエスト当たりの処理の内訳を見極るための指標にします。

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.0 0 0
Processing: 9 23 3.4 25 26
Waiting: 5 22 3.6 23 26
Total: 9 23 3.4 25 26


posted by さわひで at 12:59 | Comment(0) | TrackBack(3) | ウェブ系の技術
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。
この記事へのトラックバック

Apacheのabでベンチマークテスト
Excerpt: Apacheに付属しているab(Apache Bench)というツールで、リクエストに対する接続の負荷テストを行って見た。 ローカルマシン(Windows)から...
Weblog: ウェブライフハック
Tracked: 2009-05-15 10:39

CakePHPのQdmailComponentに気をつけること。
Excerpt: 結構重要なことだと思うので、ちょっと挑発的なタイトルになってしまいました。 akiyan.comのQdmailは使うときだけnewするかvar $is_qmailを変更しよう (特にCakePHPで使..
Weblog: sanojimaru.com
Tracked: 2010-06-15 20:03

サーバのヒートラン
Excerpt: 今まで使っていたマシン(ThinkPad A20m)は、今、ヒートラン中です。と言っても、立ち上げているだけだから意味ないかな?とりあえず、ハングアップした時間が分かる様に、下記のスクリプ...
Weblog: fukuchan.myhome.cx - d3blog
Tracked: 2010-11-18 00:39
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。