Jmeterでウェブサイトの負荷テストを行う方法

ウェブサイトの負荷テストにJmeterを使ってみた。使い方を忘れないようにメモしておく。

Jmeterとは

Apache JMeter(アパッチ ジェイメーター)は、Apacheソフトウェア財団にて開発されているソフトウェアである。クライアント・サーバシステムのパフォーマンス測定および負荷テストを行うJavaアプリケーションである。HTTPレスポンスの内容の妥当性を判定することもできるため、パフォーマンステストのみならず、機能テストに使用することも可能である。

Jmeterの使い方

今回はJmeterのインストールから負荷テストの結果表示までを順序を追って説明する。今回対象とするウェブサイトには以下の2つの条件がある。

  • Basic認証が設けられている
  • IDとパスワードを入力してログインする必要がある

Jmeterをセットアップする

公式サイトのBinariesからダウンロードして解凍し、適当なディレクトリに設置する。
binディレクトリにあるApacheJMeter.jarを選択して起動する。

負荷テストを作成する

Jmeterを立ち上げると「テスト計画」と「ワークベンチ」が左ペインに表示される。「テスト計画」とはプロジェクトのようなものである。これに設定を追加していくことで負荷テストを作成することが出来る。

スレッドグループを設定する

実際にどの程度の負荷をかけるのかを設定する。左ペインの「テスト計画」を右クリックし、 Threads(Users)からスレッドグループを選択する。スレッドグループには主に以下の3つの項目を設定する。

  • スレッド数 :アクセスしてくるユーザの人数だと考える。1スレッド1ユーザである。
  • Ramp-Up 期間(秒) :設定したスレッド数に対して、それを何秒以内に処理するかを決める。
  • ループ回数 :一つのテストケースを何回繰り返すか設定する。無限ループを設定することも出来る。

例えば、スレッド数を10、Ramp-Up 期間(秒)を5、ループ回数を10と設定した場合、10個のスレッドを5秒の時間をかけて処理し、スレッド毎にシナリオを一回だけ実行するという意味になる。

負荷テストを上手く行うコツは、スレッド数を増やし過ぎないことである。Jmeterは指定されたスレッド数分だけのスレッドをテストの最初に作成するので、スレッド数を増やしすぎるとメモリ不足に陥り、テストが失敗してしまうことがある(同時接続者が多いネットゲームの負荷テストではこういったテストは有効かもしれない)。なので、スレッド数を増やしすぎず、ループ回数を上手く使う必要がある。

HTTP認証マネージャを設定する

Basic認証の設定を追加する。左ペインの「スレッドグループ」を右クリックし、設定エレメントからHTTP認証マネージャを選択する。「追加」を選択して設定を追加し、Basic認証のユーザ名とパスワードを入力する。

ウェブサイトにログインするアクションを設定する

ウェブサイトにログインする設定を追加する。左ペインの「スレッドグループ」を右クリックし、サンプラーからHTTPリクエストを選択する。
「サーバ名またはIP」に対象とするIPやドメイン名(localhostも可能)を入力する。必要があれば、パスの項目も入力する。
Parametersには、名前(input要素のname属性)と値(IDもしくはパスワード)を入力する。

jmeter-login-action

計測対象のアクションを設定する

こちらも同様に左ペインの「スレッドグループ」を右クリックし、サンプラーからHTTPリクエストを選択する。
「サーバ名またはIP」に対象とするIPやドメイン名を入力する。必要があれば、パスの項目も入力する。

計測結果を表で表示するように設定する

最後に負荷テストの結果を表で表示する設定をする。左ペインの「スレッドグループ」を右クリックし、リスナーから結果を表で表示を選択する。

負荷テストを実行する

中央の上の方にある開始ボタンを選択することで負荷テストを実行することが出来る。負荷テストの結果は先ほど設定した通り、表で表示される。

参考
JMeter – Wikipedia
今から3分で jmeter の使い方を身に付ける  (負荷テスト入門) – 主に言語とシステム開発に関して
JMeter の利用方法(1) Ramp-up、スレッド数、ループ回数の誤用 | 株式会社ケイズ・ソフトウェア