Apache Bench(アパッチ ベンチ) について
2015/08/25
スポンサードリンク
Apache Bench(アパッチ ベンチ) について
ApacheのWEBサーバの性能を測定したい時に利用するApache標準で付いているツールを紹介します。
WEBサーバを運用していると、どのくらいのパフォーマンスで運用できるのか?どのくらいの負荷に耐えられるのか?など、気になってくることがあります。
この部分を把握しておかないと、アクセス増加時にパフォーマンスが悪くなって表示が遅くなったり、高負荷の際にサーバダウンしてしまいます。
※Apache Benchは、使用方法を間違えると他のサーバへ負荷をかけてしまうこともありますので、使用する際は十分注意してください。
Apache Benchのツールコマンド使用方法
Apache Bench(アパッチ ベンチ)はコマンド[ab]を利用します。
これはApache HTTP Serverがインストールしてあれば利用できる、WEBサーバの性能を計測するためのコマンドです。
使用する前にまず、abコマンドで利用できるオプションを覚えます。
基本的なオプション
-c:同時接続数。
-n:発行リクエスト数。
コマンド形式
ab -c [同時接続数] -n [発行リクエスト数] [URL]
主に利用するオプション
オプション名 | 説明 |
---|---|
-c 数値 | 同時に発行するリクエストの数を数値で指定 |
-n 数値 | リクエストの総数を数値で指定 |
-t 数値 | サーバからのレスポンスの待ち時間(秒)を数値で指定 |
-A ユーザー名:パスワード | ベーシック認証が必要なコンテンツにテストする |
-P ユーザー名:パスワード | 認証の必要なプロキシを通じてテストする |
-X プロキシサーバ名:ポート番号 | プロキシ経由でリクエストする場合に指定 |
-V | バージョンを表示 |
-h | ヘルプを表示 |
(他にも色々あるので、詳細は -h オプションで確認してください。)
早速利用してみましょう。
例えば、10ユーザが同時にhttp://example.com/ に1リクエストを発行した場合を想定しました。
ab -c 10 -n 10 http://example.com/
10ユーザが同時に10リクエストを発行した場合を想定しています。
-nには10 x 1-0 = 100を指定します。
ab -c 10 -n 100 http://example.com/
接続先にベーシック認証がかかっている場合。
-Aの後にベーシック認証ユーザとパスワードを:(コロン)で区切って指定します。
ab -c 100 -n 100 -A user:pass http://example.com/
同時接続数よりTotal発行リクエスト数が少ないとエラーメッセージが表示されます。
ab -c 100 -n 10 -A hogeuser:hogepass http://example.com/
ab: Cannot use concurrency level greater than total number of requests
・・・
同時に100人で合計10リクエストの状況がありえないので、エラーが返ります。
事例サンプル
以下のコマンドを実行した時の結果サンプルです。URLはExample Domain(例示ドメイン) にしています。
$ ab -c 10 -n 10 http://example.com/
This is ApacheBench, Version 2.3 <$Revision: 1604373 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking example.com (be patient)…..done
Server Software: Apache
Server Hostname: example.com
Server Port: 80
Document Path: /
Document Length: 420 bytes
Concurrency Level: 10
Time taken for tests: 0.051 seconds
Complete requests: 10
Failed requests: 0
Total transferred: 6740 bytes
HTML transferred: 4200 bytes
Requests per second: 194.61 [#/sec] (mean)
Time per request: 51.384 [ms] (mean)
Time per request: 5.138 [ms] (mean, across all concurrent requests)
Transfer rate: 128.09 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.1 0 0
Processing: 46 48 1.6 48 51
Waiting: 46 48 1.6 48 51
Total: 46 48 1.5 49 51
Percentage of the requests served within a certain time (ms)
50% 49
66% 49
75% 49
80% 50
90% 51
95% 51
98% 51
99% 51
100% 51 (longest request)
となります。
主なポイントを解説すると、
■リクエストの正常処理の確認
Complete requests:正常処理リクエスト数
Failed requests:処理失敗リクエスト数
上記の例では、10リクエストを発行して、
Complete requests:10
Failed requests:0
という結果になったので、
全てのリクエストが正常に行われたということです。
■リクエストはどこまで耐えられるのか?
ab -c 10 -n 10
オプションの、-c と -nの値を増加させていくとFailed requestsが0以外の数が上がってくるので、
そのリクエストがWEBサーバの負荷の限界と判断できます。
■リクエスト/秒 でどれくらい処理できるのか?
Requests per secondを参照すると。
194.61とあるので、1秒あたり約194リクエストまで処理可能となります。
■パフォーマンスは?
1リクエストあたりの処理時間をみるには、
Time per request(mean, across all concurrent requests)を参照します。
上記の例では、5.138 ms要したことになります。
全リクエストの処理時間をみるには、
Time per request(mean)を参照します。
上記の例では、51.384 ms要したことになります。
いかがでしたでしょうか?
WEBサーバの性能を計測するツールとしては、「Apache Bench」はデフォルトでインストールされているため手頃に性能評価が行えるツールとして利用して、「weighttp」などは強力な負荷テストなどを行う際に利用していただくなど、状況に応じて使い分けていただくことをお勧めします。
※Apache Benchは、使用方法を間違えると他のサーバへ負荷をかけてしまうこともありますので、使用する際は十分注意してください。