運用中のWEBサイトで、一部のクライアントから、たまにPHPのWEBアプリのページで HTTP 500 のステータスになるという報告がありました。
ただ、自分のクライアントPCからでは現象が起きません。
もしかしたら、サーバが過負荷の状態があるのかもしれないと思って、負荷試験をすることに。。
以前某メーカー系でJ2EEアプリケーションサーバ開発時は Microsoft の Web Application Stress ツールを使って評価してたので、ほんと久しぶり(数年ぶり)に使おうと思ったら、Vista には対応してないんですね。
インストール中にエラーは出るし、インストール後も「MSVCP50.dllが見つからなかったため...」という感じで起動できませんでした。
で、別のツールを探してると JMeter たるものを発見。
あの Tomcat と同じ Jakarta Project で開発されてる Java 上で動く負荷試験ツールのようです。
Jakarta Projectのサイトからバイナリ、ソース共にダウンロードできます。
一応下記のサイトを参考に使ってみました。(時間なかったんで、触りしか読んでませんが。。。)
STACK*:【連載 】JMeter(高機能/フリーなテストツール)
@IT:第2回 JMeterによるWebサーバ性能評価の勘所
使い方等は上記サイトで丁寧に説明されてました。
なんか HTTP 以外にも FTP とか JDBC とかいろいろな負荷試験が出来るようです。
今回はあるPHPページで認証やクッキー、POST情報が要らないページだったので、割合とすんなりできました。
起動には、「jmeter.bat」を開いてやればOKです。
↑まず「スレッドグループ」というのを作る必要があるそうです。
↑そのスレッドグループで、スレッド数やループ回数、いわゆる負荷を設定します。
上記の図は、かなり大負荷ですね。。。
小規模サイトなら普通はスレッド数 10 くらいでやってたかと。。
これ見ると、いろいろありますね。JMeter の高機能さが伺えます。
↑WEBサーバに対するテストなので、HTTP のサンプラーを追加しました。
ここで、サーバ名や対象ページ、パラメタを設定します。
↑後は、「リスナー」でどのような結果表示するかを設定します。
↑これが、「結果をツリーで表示」リスナーで表示した結果です。
赤がステータスがダメだったやつですね。
やっぱり HTTP 500 が結構返ってます。。。
今回は最低限の機能しか使ってませんが、いろいろ使いこなすとかなり強力なツールになりそうです。