サーバーのベンチマークツール

hostingstock.netでは、自作の簡単なツールでレンタルサーバーのレスポンス測定を行っています。

紹介するツールの多くは短時間に多くのリクエストを発行しサーバーに高負荷をかけるものです。レンタルサーバーに利用すると他のユーザーに迷惑になりますし、DoS攻撃と勘違いされることもあります。最悪の場合、レンタルサーバー会社から利用停止の措置を受けるかもしれません。利用する場合は十分に注意してください。

随時、説明を追加していく予定です。macユーザーなので、WindowsやLinux等の説明はないかもしれません。

ab – Apache Bench

Apache HTTP serverと一緒にインストールされます。Macでは標準でインストールされています。また、WindowsでもXAMPPを利用していればab.exeがあるはずです。

ab -n 100 -c 10 http://www.example.com/
  • n : 総リクエスト数
  • c : コネクション数

この設定であれば、同時に10個のコネクションを用いて、合計100回のリクエストを実行することになります。1コネクションあたり10リクエストとなります。他にもkeep-aliveを有効にするなど、様々なオプションがあります。

以下の結果を知ることができます。

  • 1秒間あたりの処理リクエスト数
  • 1リクエストあたりの処理時間
  • エラー数、その他

httperf

macならHomebrewでインストールできます。

こちらもabと似たようなツールです。

httperf --server example.com --port 80 --uri /index.php --rate 5 --num-conns 400 --num-calls 2
  • server : サーバードメイン or IP
  • port : ポート番号
  • uri : パス
  • rate : 1秒間あたりのコネクション(セッション)数
  • num-conns : コネクション数の合計(このコネクション数に達すると終了)
  • num-calls : keep-alive。1コネクションあたりのリクエスト数。num-conns×num-callsが総リクエスト数となります。

上記の例は、1秒間に5コネクション、400コネクションまで測定。合計800リクエストのテストとなります。

以下の結果を知ることができます。

  • 1秒間あたりの処理リクエスト数
  • 1リクエストあたりの処理時間
  • HTTPステータスコード
  • エラー数、その他

こちらもabと同じような結果を取得できます。

weighttp

こちらもmacならHomebrewで簡単にインストールできます。

サンプルは以下の通りです。

weighttp -n 1000 -c 10 -k http://example.com/

同時に10個のコネクションを利用して1,000個のリクエストを実行します。

以下の結果を知ることができます。

  • 1秒間あたりの処理数(req/s)
  • 1秒間あたりの転送量(kbyte/s)
  • HTTPステータスコード
  • エラー数、その他

上記2つよりも安定しているという記事もありますが、1年以上開発が停止していますね。

wrk

JMeter

Javaで動作するGUIアプリケーションです。多機能でWebアプリケーション以外、データベースやFTPなどのテストにも利用できます。

PhpSpeed

curl-loader

Siege

Load Impact

なぜベンチマークツールを利用しないか?

家庭用回線とレンタルサーバーからの測定を行っているので、以下の様な理由となります。

  • 高負荷を掛けることが目的のツールなので、共用サーバーでは迷惑となる。プロバイダーにDoS攻撃と勘違いされても困る。
  • 長期間稼働させるので安定性を確保したい。自作ならトラブルがあっても対応できる。
  • サポート終了や仕様変更があると対応できない。開発が停止しているツールも多い。
  • インストール可能なレンタルサーバーが限られる。動作してもツール自体が仕組み的に高負荷となるので厳しい。

ただし、ほとんど試していないので、安定かつ便利そうなら変更してみようとは思います。

Load Impactの様なWebサービスもありますが、海外サーバーからの測定になるので国内ユーザのアクセスを目的とした国内のレンタルサーバーの測定には不向きでしょう。日本のサーバー(Amazon)も選択できるようですが、趣味で使うには高すぎます。