Apache BenchでApacheの性能を測る


ApacheBenchは、Apacheに標準で付属しているベンチマークソフトです。

リクエスト数や同時接続数を実行時のオプションとして指定できますが、評価対象のURLを一つしか指定できないため、システム全体の性能の計測は行えません。
しかし、インストール作業やシナリオを作成する必要がないため、気軽に使えるツールです。

なお、使用する際にはご自身の管理するサーバー以外にテストを行わないでください。
Apache Benchは一度に大量のリクエストを送ることになるため、相手からはDos攻撃とみなされてしまいます。

Apache Benchの使い方

基本的な使い方は以下になります。

$ ab -n 100 -c 10 http://192.168.0.10/

Apache Benchのオプション

上記の例では「同時に発行するリクエストの数」が10、「リクエストの回数」が1000なので、10のクライアントが同時に接続し、あわせて100リクエストを処理するまでの時間を計測します。

オプション 意味
-n 数値 テストで発行するリクエストの回数を数値で指定
-c 数値 テストで同時に発行するリクエストの数を数値で指定
-t 数値 サーバからのレスポンスの待ち時間(秒)を数値で指定
-p ファイル名 サーバへ送信するファイルがある場合に指定
-T コンテンツタイプ サーバへ送信するコンテンツヘッダを指定
-v 数値 指定した数値に応じた動作情報を表示
-w 結果をHTMLで出力
(出力をファイルに保存すればWebブラウザで表組みされたものが見られる)
-x 属性 HTML出力のtableタグに属性を追加(BORDERなど)
-y 属性 HTML出力のtrタグに属性を追加
-z 属性 HTML出力のtdまたはthタグに属性を追加
-C ‘Cookie名称=値’ Cookie値を渡してテストする
-A ユーザー名:パスワード ベーシック認証が必要なコンテンツをテストする
-P ユーザー名:パスワード 認証の必要なプロキシを通じてテストする
-X プロキシサーバ名:ポート番号 プロキシ経由でリクエストする場合に指定
-V abのバージョン番号を表示
-k HTTP/1.1のKeepAlive?を有効にしてテストする
-h abのヘルプを表示

Apache Benchのテスト結果

赤字は注目すべき値です。

項目 意味
Server Software 評価対象のサーバソフトウェア
Server Hostname 評価対象のホスト名またはIPアドレス
Server Port 評価対象のサービスポート番号
Document Path 評価対象となるWebサーバのドキュメント
Document Length 評価対象となるWebサーバのドキュメントの容量
Concurrency Level 同時アクセス数(-cオプションで指定した値)
Time taken for tests 評価に要した総時間数
Complete requests 総リクエスト数
Failed requests 失敗したリクエスト数
Write errors 書き込みエラー
Non-2xx responses URLで指定されたファイルがない(404 File Not Found)」など、レスポンスコードが200番台ではなかった応答数(0の場合は表記されない)
Total transferred 送受信した総byte数
HTML transferred HTMLを送受信したbyte数
Requests per second 1秒当たりの平均処理リクエスト数
Time per request 1リクエスト当たりの平均処理時間
Transfer rate 1秒当たりに受け取ったbyte数
Connection Times (ms) 接続時間(Connect)/処理時間(Processing)/待ち時間(Wait)の最小値(min)、平均値と標準偏差(mean[+/-sd])、中央値(median)、最大値(max)
Percentage of the requests served within a certain time (ms) ある時間内に処理されたリクエストの割合。「50% 98」は、50%のリクエストが98ms以内に処理されたことを表す

この中でも最も注目すべきは以下の2点になります。

リクエストの成否(Complete requestsとFailed requests)

abで発生させたリクエストがすべて成功していればいいですが、一部が失敗するようならWebサーバの処理が追い付いていません。

これは、特にプログラムを実行してページを生成する場合に起こりやすく、同時接続数の限界を超えていると考えるべきです。

1秒間に処理されたリクエスト数(Requests per second)

Webサーバのベンチマークで、最も重視されるのがこの項目となります。

CPUのMIPSやデータベースのTPCと同じく、1秒間にどれだけ処理できたかが重要な数値になります。
パラメータやプログラムを修正したりしてその効果を測る際にも、この項目の数値がどれだけ改善するか(数値が大きくなるか)で評価を行います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


+ 2 = 6

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>