Apache JMeter2.5.1をMacで使う
0.改訂履歴
- 2011.11.23 新規作成
1.はじめに
このドキュメントでは,Jmeterを使って負荷テストを行う手順を説明する.
- 0.改訂履歴
- 1.はじめに
- 2.JMeterのインストール
- 3.JMeterを起動する
- 4.簡単なHTTPリクエストのテスト を行う
- 4.1.スレッドグループを作成する
- 4.2.HTTPリクエストを設定する
- 4.3.テストを実行する
- 4.4.USER-AGENTを変更する(設定エレメントのHTTPヘッダマネージャ)
- 4.5.スレッドグループ内で,移動する
- 5.実行結果を確認する(応答時間をリスナーでグラフ表示してスループットを確認)
- 6.HTTPリクエストの内容,応答の内容を確認する(結果をツリーで表示)
2.JMeterのインストール
- 次のリンク先にある公式サイトから,ダウンロードする.
- Apache JMeter.
- 今回入手したのは,バージョン2.5.1
- ダウンロードしたアーカイブを展開するだけで,インストールは完了.
3.JMeterを起動する
- JMeterはjar形式で提供されているので,そのままダブルクリックで実行できる.

- 最初の1回だけ,次のようなダイアログが表示される.

- [開く]を選択して続ける.
- 次のような画面が表示される.
- 日本語が表示されない場合は,Optionメニューから言語を選択する.
4.簡単なHTTPリクエストのテスト を行う
- 一番基礎的なテストとして,HTTPリクエストを実行してみる.
4.1.スレッドグループを作成する
- まずは,[テスト計画]の中に[スレッドグループ]を作成する.[テスト計画]を右クリックで選択すればメニューがでてくる.

- スレッドグループが,テストの基本となる.
- スレッド(Thread)とは,OS上でアプリケーション内の処理を並列で行う際の最小の単位.
- スレッドグループでは,スレッドを何個起動し,何回実行するかを定義する.
- 次のような画面が表示される.

- Ramp-Up期間とは,何秒間で全スレッドを生成するかを指定する.
- Ramp-Upとは「増産する」という意味.
- スレッド数を100,Ramp-Upを10秒とすると,100÷10秒で,1秒間に10スレッドが起動する.
- スレッド数を100,Ramp-Upを5秒とすると,100÷5秒で,1秒間に20スレッドが起動する.
- スレッド数を100,Ramp-Upを0秒とすると,100÷0秒で,1秒間に100スレッドが起動する.
- 今回,次のような設定とした.

- この設定だと,スレッドを10個立ち上げ,30回リクエストを行う.
- つまり,サーバ側には10ユーザで合計300リクエストが記録される事になる.
- 実行中にエラーが発生した場合は,[テスト停止]が行われる.エラーとは,404 File Not Foundも含まれる.
4.2.HTTPリクエストを設定する
- JMeterで実行できる処理は,サンプラーの中で確認できる.
- HTTPリクエストを実行する為には,サンプラーの中から選択して,スレッドグループに追加する.

- [HTTPリクエスト]サンプラーを追加すると,次のような画面になる.

- 最低限の設定を行ってみる.
- 実行したいテストの情報
- URL:http://testsite.jp/index.php
- HTTPリクエストサンプラーへ設定する項目
- サーバ名またはIP:testsite.jp
- ポート番号:80
- パス:index.php
- 設定した状態は次の通り.

- 今回の設定はきわめてシンプルに設定してあるが,環境によってはプロキシサーバ等を設定する事もできる.
4.3.テストを実行する
- スレッドグループを作成し,サンプラーを設定すれば,テストを実行する事ができる.
- テストを実行するには[実行]→[開始]を選択する.

- これを選んでも,特にダイアログや実行中を示すものが無いが,実行中はこの[開始]メニューがグレー表示になって,選択する事ができ ない.

- しばらくすると,テストが終了している.
- Webサーバのアクセスログを確認すると,次のようなログが記録されている.
192.168.99.2 - - [23/Nov/2011:22:28:30 +0900] "GET /index.php HT |
4.4.USER-AGENTを変更する(設定エレメントのHTTPヘッダマネージャ)
- デフォルトのままだとUSER_AGENTはJavaのランタイムバージョンが設定されているが,これを任意の文字列に変更する.
- HTTPヘッダに設定されているUSER-AGENTは,[設定エレメント]を使って設定する.
- [スレッドグループ]を右クリックする.

- [設定エレメント]→[HTTP ヘッダマネージャ]を選択する.

- [追加]ボタンを押すと,ヘッダを設定する事ができる.

- [名前]および[値]の行が追加されるので,ダブルクリックして入力する.
- 名前:USER-AGENT
- 値:Mozilla/5.0 AppleWebKit KHTML Gecko Safari UJP
- この状態で実行すると,次のようになる.
192.168.99.2 - - [24/Nov/2011:00:11:34 +0900] "GET /index.php HT |
- 任意のUSER-AGENTが設定されている事が分かる.
4.5.スレッドグループ内で,移動す る
- スレッドグループ内で追加したアイテムは作成順になっているが,場合によっては定義順を設定したい事がある.
- 例として,[HTTPヘッダマネージャ]を[HTTPリクエスト]の前に移動してみる.

- 移動したいアイテムをドラッグ&ドロップすると,メニューが出てくるので実施したい作業を選択する.

- 移動できた事が確認できる.
5.実行結果を確認する(応答時間をリスナーでグラフ表示してスループットを確認)
- ここまでの設定だと結果レポートが無い.レポート機能 「リスナー」をスレッドグループに追加すれば良い.

- 設定できるリスナーは,多岐にわたる.

- 今回は一番スタンダードな[グラフ表示]を使ってみる.
- 他のアイテムと同じく,[スレッドグループ]を右クリックしてメニューから追加する.

- グラフ表示について設定する部分もあるが,まずはデフォルトのまま,テストを実行してみる.

- テストを実行すると,リアルタイムにグラフが表示される.
- 上記は,スレッド数10,Ramp-Up 1,ループ30で実行した結果.
- 下記は,スレッド数20,Ramp-Up 1,ループ30で実行した結果.

- 緑色で表示してあるスループットが,705/分から,86/分となっ た.
- ここでいうスループットは,Apache JMeterの独自のスループットなので何とも言えないが,スレッド数が2倍,つまりユーザ数が倍になったら,スループットは89%ダウンしたといえる.
- 何回か実行して,[サンプル数]を一定数集めたところで,いろいろと判断すれば良いのだと,思われる.
6.HTTPリクエストの内容,応答の内容を確認する(結果をツリーで表示)
-
応答だけではなく,そもそもHTTPリクエストが正しく行われているか,あるいはHTTPのヘッダ,応答内容を確認したい場合は,リスナーの[結果をツ
リーで表示]を使えば良い.

- 追加するだけで,設定不要.
- テストを実行してみると,次のように結果が表示される.

- 左列に,リクエストした順番にリストがあるので,選択する.
- 画面右にあるタブに,各種情報が表示される.
- Sampler resultは,HTTPのレスポンスコードが表示されている.

- リクエストは,HTTPリクエスト,つまりJMeterがサーバに対して発行したURLやヘッダ情報が表示されている.

- 応答データは,その名の通りHTTPのレスポンス内容,HTMLの内容が記録されている.

- まずは大量のリクエストを発行するテストの前に,この結果を見てテストデータが正しいか否かを確認する事ができる.