y-matsui::weblog

電子楽器、音楽、コンピュータ、プログラミング、雑感。面倒くさいオヤジの独り言

JMeterを使ったWeb負荷テスト

Webアプリケーションの負荷テストをどのようにするか?
今やWebテストも無償でおこなえてしまうご時世。
数あるフリーのテストツールの中でも、今回はApache Jakarta ProjectJMeterというJavaツールを試してみた。

変数の利用や、ループ、フォーム認証、GET,POSTパラメータの送信などのテスト項目も素晴らしいが、結果をグラフや表で表示する機能も使いやすい。
タイマー起動や、結果をメール送信したりもできるので、時間がかかりそうなテストは、スケジュール実行にしちゃえば良いし、リモートクライアント(ゾンビPCって言ったら聞こえが悪いか)を使って、複数台のテスト端末から、一気に攻撃を仕掛ける(だから、負荷テストだってば!)も可能。

■テストケース
自分の場合は、何に使ったかというと、
・仮想サーバで動作するapacheのパフォーマンステスト
apacheの静的コンテンツのパフォーマンス
・apachaの動的コンテンツ(PHP)のパフォーマンス
・リバースプロキシ環境で動作させるIISアプリのパフォーマンス

「仮想サーバとして稼働するCentOS5.2の背後に、IIS5.0のASP.NETプログラムを動作させ、毎秒同時100クライアントが、検索パラメータを48種類切り替えながら10回検索実行する」なんていう、なかなか素晴らしいシナリオのテストを実行してみた。

■結果
仮想サーバゲスト(CentOS5.2)のCPU利用率は、常に20%程度、死ぬこと無く、動作した。このテスト中に、CentOS上の静的コンテンツにアクセスしたが、お世辞にも早いとは言えなかった。
90%Lineという評価項目があり、これは全リクエストの90%が、何ミリ秒で応答するかという値。平均値よりも参考になる。
この90%Lineの値が、実際にユーザが経験する応答時間だろうからだ。
90%が5秒以内で応答できる条件を探ると、同時50接続/秒以内という結果になった。

テストでどれくらいの負荷をかけたか、Webalizerの統計を見ると、
送受信したバイト数:3GB
ユニーククライアント数:14000
ページ:24万ページ

であった。凄い。
※これって、負荷テストって言わなければ、完全にDDOS攻撃だねー。

■参考URL
Apache Jakarta Project JMeter
Apache Jakarta Project JMeterマニュアル
Apache Jakarta Project JMeterマニュアル コンポーネントリファレンス
ITアーキテクト テスト・スクリプト改善のヒント
IT技術情報>技術系一般知識>JMeter(高機能/フリーなテストツール)第1回:JMeterの基本
techscore JMeter 1章 JMeterの基本
@IT総合トップ > テクノロジー > Linux Square > JMeterによるWebサーバ性能評価の勘所
JMeterでWebアプリケーションのパフォーマンス測定を行う[初級〜中級] オープンソースの負荷テストツールJMeterの利用