Pocket

JMeter

  • add this entry to hatena bookmark

公開日:2012/06/09、更新日:2013/10/29

JMeterは、パフォーマンスを測定する負荷試験ソフトウェアであり、オープンソースのJavaアプリケーションです。Webアプリケーションの負荷試験機能以外にも、DBの負荷試験など様々なタイプのテスト機能が付属しています。もちろん日本語にも対応しています。

※ご自身が管理していないサーバに対しては利用しないようにお願いします。

ダウンロード

Windows環境でJMeterを利用するために、JMeterの「Downloads」サイトからダウンロードします。現時点(2013/10/15)での最新版は「apache-jmeter-2.9.zip」です。(ファイルサイズは約27MB)

ダウンロードしたファイルのSHA1 Checksumを確認します。マイクロソフトの File Checksum Integrity Verifier (FCIV) ユーティリティを使った場合の、実行結果は以下となります。

c:\FCIV>fciv c:\jmeter\apache-jmeter-2.9.zip
//
// File Checksum Integrity Verifier version 2.05.
//
e1f3503d004b9d16a40eb5fd89630f76 c:\jmeter\apache-jmeter-2.9.zip

c:\FCIV>

http://www.apache.org/dist/jmeter/binaries/apache-jmeter-2.9.zip.md5 の値と合致している事を確認します。

なお、このJMeterは、JREもしくはJDKのバージョン1.5以降が必要です。

JMeter起動

JMeterは簡単に利用を開始できます。

ダウンロードしたzipファイルを解凍すると、解凍されたbinディレクトリの中に、いくつかのbatファイルが存在します。その中の「jmeter.bat」をダブルクリックすると、JMeterが起動します。

以下は、JMeterの初期起動画面です。

JMeter起動画面のキャプチャ

なお、起動時には、起動ディレクトリにログファイル「jmeter.log」が作成され、各種情報が記録される事になります。

基本的な使い方

簡単なテストケースを行う際のJMeter設定を記載しています。

テストケース:www.example.com/index.html に対して、スレッド数「10」、Ramp-Up期間(秒)「1」、ループ回数「1」で実行し、その結果を表形式で表示する。

  1. 左ペインの「テスト計画」で右クリックし、「追加」ー「Threads(Users)」ー「スレッドグループ」を選択
  2. 表示されるスレッドグループ画面で、スレッド数を「10」、Ramp-Up期間(秒)を「1」、ループ回数を「1」に設定
  3. 左ペインの「スレッドグループ」を右クリックし、「追加」ー「サンプラー」ー「HTTPリクエスト」を選択
  4. 表示されるHTTPリクエスト画面で、Webサーバ名を「www.example.com」、パスを「/index.html」に設定
  5. 左ペインの「スレッドグループ」を右クリックし、「追加」ー「リスナー」ー「結果を表で表示」を選択
  6. 「実行」メニューから「開始」を選択

すると、計10回(スレッド数10 x ループ回数1)のリクエストが実行され、結果が表で表示されます。

スレッドグループの設定

JMeterからリクエストを発行する際の設定値は「スレッドグループ」で設定します。

スレッド数 JMeterが負荷測定で実行するスレッド数(JMeterが生成したアクセスユーザー数)
Ramp-Up期間(秒) 指定したスレッド数が生成されるまでの秒数
ループ回数 各スレッドで実行するシナリオを繰り返す回数

Ramp-Up期間(秒)については、以下の2つの図で説明します。

例えば、スレッド数が「3」で、Ramp-Up期間(秒)が「1」で、ループ回数が「2」の場合は、以下のように処理が進んでいきます。

JMeter-ThreadGroup-1

次に、スレッド数が「3」で、Ramp-Up期間(秒)が「30」で、ループ回数が「2」の場合は、以下のように処理が進んでいきます。

JMeter-ThreadGroup-2

指定したスレッド数「3」個が生成されるまでの時間が「30秒」となりますので(2スレッド目が10秒後、3スレッド目が20秒後に開始されると思います)、上の例では、スレッド②やスレッド③の生成時間をズラす事が可能になるわけです。

※ シナリオにタイマー機能を入れた場合は、この時間の考え方は変わってきます。

徐々にアクセスユーザー数を増やしていきたい場合に有効な機能です。通常のサイトでは、いきなり同時に多数のアクセスユーザーが来る事はあまりないと思いますので、Ramp-Up期間(秒)を設定するケースは多いと思います。

JMeter でWeb負荷測定を行う際のスレッドグループ設定に関する実行例」で設定値の挙動を記載しています。ご参考まで。

プロキシサーバ

JMeterをプロキシサーバとして機能させ、ブラウザにJMeterをプロキシとして設定する事によって、ブラウザアクセス結果をテストシナリオとして登録する事が出来ます。

プロキシの設定を行う場合は、以下の方法で設定を行います。

  1. 左ペインの「テスト計画」で右クリックし、「スレッドグループ」を追加しておく
  2. 左ペインの「ワークベンチ」を右クリックし、「追加」ー「Non-Testエレメント」ー「HTTPプロキシサーバ」を選択
  3. 「HTTPプロキシサーバ」画面にて、画面下部の「開始」ボタンをクリック
  4. JMeterをプロキシとして設定したブラウザにて、試験対象のWebページをブラウズする。その結果のHTTPリクエストが、JMeterに登録される。
  5. 試験対象のWebページをブラウザし終わったら、HTTPプロキシサーバ画面下部の「停止」ボタンをクリック
以上で収集したテストシナリオを使って負荷試験を実施する事が出来ます。

プロキシでのページ収集時の設定

JMeterのプロキシ機能で、ブラウザの推移結果を収集する際には、画像ファイルやCSSファイルなども収集の対象に入ってしまいます。これらの不要なファイルを収集対象から外したい場合は、「除外するパターン」に除外したいパターンを追加します。

パターンの設定では正規表現が利用できます。例として、gif拡張子のファイルを除外したい場合は以下を設定します。

.*\.gif

あるサンプルサイトの試験にて設定する「除外するパターン」では以下のような設定を行いました。

.*\.gif
.*\.png
.*\.js
.*\.css
.*\.ico
\/safebrowsing.*

Tips

  • Cookie管理
    • セッション管理などの用途で、Cookieが認証で使われている場合は、「HTTPクッキーマネージャ」を用います。スレッドグループなどの必要な個所に「HTTPクッキーマネージャ」を追加するだけで、Cookieを保持する事ができます。
  • レスポンス結果を確認したい場
    • 試験にて検査対象のWebサーバからの応答結果を確認したい場合は、リスナーの「結果をツリーで表示」で、ページ毎の応答データを確認できます。確認できるのは応答データのHTMLソースコードですが、対象Webサーバが応答した結果を確認できるので有用です。
  • User-Agent
    • JMeterからWebサーバへアクセスした際のUser-Agent情報は「Apache-HttpClient/4.2.3 (java 1.5)」となっていました。

更新履歴

  • 2013/10/29
    • スレッドグループの設定に関する図を一部修正。
  • 2013/10/15
    • Ramp-Up期間(秒)の説明図を追加。一部の記載を修正。
  • 2013/10/13
    • 一部の記載を修正、追加。
  • 2013/06/02
    • Ramp-Up期間(秒)の説明を、「「リクエストの総回数」を実行する期間」から「指定したスレッド数が生成される時間(秒)」に変更。
    • 上記に伴う記載の微修正
  • 2013/04/23
    • バージョンアップに伴う更新(Apache JMeter 2.9)
  • 2012/06/09
    • 初版公開(Apache JMeter 2.7)

関連する投稿
Pocket

2 thoughts on “JMeter

  1. Ramp-Up期間は
    「リクエストの総回数」を実行する期間
    では無く、
    スレッド数が起動する時間です。
    スレッド数×ループ=Ramp-Up期間という人もいますが、
    Ramp-Up期間内に終わることが前提で話が進んでいますが、
    終わらない場合があるので、それはおかしいです。

    • 貴重なご意見ありがとうございます。
      Ramp-Up期間内に終わらない場合があるはずですので、確かにおっしゃるとおりだと思います。
      後日あらためて自分でも実験してみて、記載を修正させていただきます。
      引き続き何卒宜しくお願いいたします。感謝です!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*

チェックサイト RSS Feed読者登録はいかがでしょうか?RSS配信中です。