LoginSignup
2
3

More than 5 years have passed since last update.

パフォーマンス測定(ApacheBench)

Posted at

・Apacheに付属しているabコマンドを使う
例:ab -n 1000 -c 10 "http://localhost/?url=www.webike.net&w=140&h=87&ver=2&f="

-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のヘルプを表示

●abを実行するコンピュータの位置
abがインストールされているコンピュータとなると、まずはWebサーバそのものということになるだろう。
しかし、Webサーバでの実行は、効果測定に適しているとはいい難い。
なぜなら、それは計算時間を測定しているだけであって、接続に要する時間などを測定できるわけではないからである。
abは、少なくともWebサーバとは別のコンピュータで実行したい。
できれば、ルータの直前か直後(図1)がいいだろう。そうすることで、より現実的なパフォーマンスを測定できるからである。

●発生させる同時接続数量
リクエスト数はサンプリング数量だから、あまり多過ぎない程度に大きめの値を指定すればいい。
それに対し、同時接続数の指定は慎重に選択したい。
そのWebサーバへの同時接続数があらかじめ予測できるようであれば、その数値の前後30%程度の範囲で測定すればいいだろう。
予測がつかない場合は広い範囲で測定するしかないが、どちらにしても同時接続数の限界を測るのも重要なポイントの1つだ。

また、1台のコンピュータが発生させられる同時接続数についても注意したい。
例えば、高性能なUNIXサーバに対して測定する場合、相当な数の同時接続を発生させる必要がある。
しかし、普通のPCサーバで発生させられる同時接続数には、おのずと限界がある。
従って、複数台のコンピュータにabを入れて測定しなければならない。たとえ、1台のコンピュータでこなせる数だとしても、複数台での測定も試してみることを勧める。

●リクエストするURL
最後に、リクエストするURLであるが、これも十分に検討するべき項目だといえる。
先にも述べたとおり、1つのWebページを表示するには、HTMLファイルとともに画像ファイルなども必要になる。
しかし、abは単一かつ同一のファイルをリクエストすることしかできない。

これは、Webサーバにとって有利な条件での測定となってしまう。
そこで、複数台のコンピュータから、それぞれ別なファイルをリクエストするなどの工夫をしてみたい。
また、リクエストするファイルの容量によって、どのような変化があるかなども、測定してみるといいだろう。

さらには、静的なファイルだけでなく、プログラムを実行して作成されるページへのリクエストも測定したい。
これも、単純なプログラムから、複雑なプログラムまで測定しておく。
どんな場合でもいえることだが、さまざまなパターンの測定を、より多く集めた方が、結果の分析も多角的に行えるものである。
2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3