Help us understand the problem. What is going on with this article?

Jmeter のインストールから負荷テストまで

More than 3 years have passed since last update.

JMeter をダウンロード

① Apache JMeter 本体をオフィシャルサイトの Download ページからダウンロードしてきます。
http://jmeter.apache.org/

Apache JMeter をダウンロード

② ダウンロードして解凍したら、普段アプリケーションをまとめている任意のフォルダに移動させます。javaが入っていればインストールは不要で、本体クリックで起動できます。

bin フォルダ内の jmeter.batjmeterw.cmd をダブルクリックするか、ApacheJMeter.jar をプログラムを指定して開きます。指定するプログラムは java です。

ショートカットを準備

JMeter の bin フォルダ内にはいくつか便利なスクリプトが用意されています。
自分がよく使うスクリプトのショートカットを作成して、使いやすい場所に置いておくと作業効率が上がります。

ファイル スクリプトの内容
jmeter.bat JMeterをGUIモードで起動する。
jmeterw.cmd WindowsシェルコンソールなしでJMeterを起動する。
jmeter-n.cmd これにJMXファイルをドロップして非GUIテストを実行する。
jmeter-n-r.cmd これにJMXファイルをドロップして、非GUIテストをリモートで実行する。
jmeter-t.cmd これにJMXファイルをドロップしてGUIモードでロードする。
jmeter-server.bat サーバーモードでJMeterを起動する。
mirror-server.cmd JMeterミラーサーバーを非GUIモードで実行する。
shutdown.cmd GUI以外のインスタンスを正常に停止する。
stoptest.cmd 非GUIインスタンスを突然停止させます。

JMeter は GUI モードのままテストすると正確な結果が得られなくなるので、jmeter-n.cmd は特に必要です。

参考: 【JMeter】負荷テスト実行はGUIから行ってはならない

① ここでは、jmeter-t.cmdjmeter-n.cmdjmeterw.cmd の3つのショートカットを作成します。JMeter の bin フォルダにアクセスして jmeter-t.cmdjmeter-n.cmdjmeterw.cmd を選択し、Alt キーを押しながら配置したいフォルダにドラッグします。

② そのままでは何のショートカットか分かりにくいので「非GUI」など分かりやすい任意の名前にしておきます。

jmeter-t.cmdjmx ファイルをドロップしてテストの設定を編集しては、jmeter-n.cmd でテストを実行する、というのが簡単で効率的です。Windowsのタスクスケジューラを使えば寝ている間もテストできます。

.cmd をテキストエディタ等で開くとスクリプトが書かれています。 コマンドについてはオフィシャルを参照。

プラグインをインストール

① jmeter-plugins.org の install ページから Plugins Manager をダウンロードします。
https://jmeter-plugins.org/

JMeter Plugins Manager をダウンロード

② ダウンロードしたファイルをそのまま JMeter の lib/ext フォルダに入れます。

③ 作成しておいた jmeterw.cmd のショートカットで JMeter を起動します。

④ 起動したら、オプションの Plugins Manager メニューからプラグインマネージャーを起動します。Installed Pulgins がインストール済み、Available Pulgins が追加できるプラグインです。

Available Pulgins から jpgc - Standard Set にチェックを入れ、Apply Changes and Restart JMeter をクリックしてインストールします。

Plugins Manager で jpgc - Standard Set をインストール

負荷テストの準備

JMeter を起動すると空のテスト計画が表示されます。それをそのまま使ってもいいし、ファイルの新規から新しくテスト計画を作ってもいいです。

テストに最低限必要な構成は以下になります。

テスト計画
スレッドグループ(ひと固まりのテスト)
    └ サンプラー(HTTPリクエスト等)

リスナーを設定する説明をしているサイトもありますが、試験をする段階ではまだ必要ありません。

テスト計画の設定

テスト計画に分かりやすい名前を付けます。名前は日本語OKです。
ここではそれだけで十分です。

スレッドグループの設定

① テスト計画を右クリックし、追加 > Threads (users) > スレッドグループ を選択します。

スレッドグループを選択

② スレッドグループの画面が表示されるので、名前とコメントを入力します。日本語OK。

③ スレッドプロパティにスレッド数、Ramp-Up期間、ループ回数を設定し、Delay Thread creation until needed にチェック を入れます。

プロパティ名 内容
スレッド数 起動するスレッド数 ≒ セッション数
Ramp-up期間 アクセス実行期間の指定(秒で指定)
ループ回数 1つのシナリオ(スレッド)を何回繰り返すか ≒ 同時アクセス数

JMeter は スレッド数 に入力された数を Ramp-up期間 に入力された秒数で均等に割り付けます。ループ回数 が 1 以上の場合はスレッドが処理されるタイミングで同じスレッドの処理を繰り返すので、ループ回数 はほぼ同時アクセスのようになります。

しかし、それだと負荷テストとしては不自然です。同時アクセスが発生することはあっても何度も同じタイミングで発生することはありません。ループ回数を 1 にしてスレッド数で想定されるアクセス回数を入力し、まばらにアクセスさせた方が自然です。

ただ、スレッド数を多くすると JMeter が必要なスレッドを一気に立ち上げてしまうので負荷をかける側のメモリの消費が激しくなり、場合によってはテストが正常に進まなくなります。

これを解消するのが Delay Thread creation until needed のオプションです。これにチェックを入れておくとスレッドが必要になったときにスレッドを立ち上げるので負荷をかける側のメモリの消費が抑えられます。

参考:
負荷テストあれこれ-JMeter 負荷のかけ方、レポートの見方-
JMeter の利用方法(1) – Ramp-up、スレッド数、ループ回数の誤用

設定例:
スレッドグループ設定

HTTPリクエスト(サンプラー)の設定

① 作ったスレッドグループ名を右クリックし、追加 > サンプラー > HTTP リクエスト を選択します。

HTTPリクエスト追加

② アクセスさせたいページを設定します。

プロパティ名 内容
名前 ページの名前
サーバ名またはIP テストするサーバーのホスト名またはIPアドレス
ポート http なら 80、https なら 443
プロトコル http or https
メソッド 通常は GET。フォーム送信後の画面等は POST。
パス / から始まるroot相対パス

設定例:
HTTPリクエスト入力

固定のページの負荷ではなく一人が複数のページをアクセスした場合の負荷をテストする場合は、スレッドグループに複数のHTTPリクエスト(サンプラー)を作ります。

ベーシック認証がかかっている場合の設定

ベーシック認証がかかっている場合は認証マネージャを作成します。

① スレッドグループ名を右クリックし、追加 > 設定エレメント > 認証マネージャー を選択します。

HTTP認証マネージャ追加

② 認証情報を入力します。

名前は分かるように「ベーシック認証」としておきます。
下端にある「追加」ボタンをクリックすると「認証マネージャに保存されている認証」の欄に空の1行が追加されるので、基底URL、ユーザー名、パスワードをそれぞれ入力します。

設定例:
ベーシック認証入力

保存して閉じる

テストは非GUIで行うので、設定が終わったら一旦保存して閉じます。
拡張子が .jmx というファイルができているので、設定の変更やテストの実行はこれをショートカットにドロップして行います。

.jmx ファイルはXMLになっており、テキストエディタ等で直に設定変更も可能です。

テストの実施

jmeter-n.cmd のショートカットにテスト計画ファイル(.jmx)をドロップします。

コマンドプロンプトが開かれ、サマリーが出力されます。

コマンドプロンプト

② コマンドプロンプトが閉じられればテスト終了です。

複数パターンのテスト実施

複数のパターンをテストする場合はテスト計画ファイル(.jmx)を複製し、'jmeter-t.cmd` のショートカットにドロップして編集します。パラメーターやアクセスさせるページを変更すれば複数パターンのテストができるようになります。

自動でテストさせる

Windowsのタスクスケジューラを使えば寝ている間もテストできます。

JMeter でスレッドを復数作ってスケジューラーの起動遅延等をしてみたのですが、使っているPCが貧弱なのか非GUIでも途中で止まってしまいました。スケジューラーならPCに余計な負荷をかけずに自動起動できます。

① Windowsメニューのすべてのプログラム > Windows管理ツール > タスクスケジューラ を選択して起動します。

Winメニュー

② 「タスクの作成」で新規タスクを作成します。

復数のタスクを登録するつもりなら、先にフォルダを作ってその中に作ると管理しやすくなります。

「タスクの作成」をクリックするとタスク設定画面が開かれます。各項目を以下のように設定していきます。

タブ 項目 設定内容
全般 名前 管理しやすい任意の名前
トリガー 開始 実行させたい日時を設定します。
操作 プログラム/スクリプト jmeter-n.cmd までのファイルパスを入力します。
操作 引数の追加 テスト計画ファイル(.jmx)までのファイルパスを入力します。

設定例:
タスクのスクリプトの設定

テスト結果の確認

テストを実行するとテスト計画ファイル(.jmx)と同じフォルダ内にレポートファイル(.jtl)とログファイル(.log)ができています。JMeter のリスナーにこのレポートファイル(.jtl)を読み込ませるとグラフを描画したり集計したりしてくれます。

結果を表で表示

テストの結果はカンマ区切りのCSVで保存されています。これを分かりやすく表で表示します。

結果を表で表示

各項目についてはこちらが参考になります。
JMeter簡易リファレンス 結果を表で表示

統計レポート

テストの結果を集計して表示します。「Save Table Data」をクリックすれば集計したものをCSVで保存できます。

統計レポート

各項目についてはこちらが参考になります。
JMeter簡易リファレンス 統計レポート

グラフ表示

応答結果をグラフ表示します。データは実際の応答時間でバラツキがあるため、ゴミのように黒い点で表示されます。

グラフ表示

各項目についてはこちらが参考になります。
JMeter簡易リファレンス グラフ表示

jp@gc - Response Times Distribution(プラグイン)

テストの応答時間の分布をグラフ化してくれるリスナーです。
X軸は応答時間を間隔でグループ化し、Y軸は各間隔に含まれるサンプル数を示します。

jp@gc - Response Times Distribution

jp@gc - Response Times Over Time(プラグイン)

時間の経過による応答時間の変化をグラフ化してくれるリスナーです。

jp@gc - Response Times Over Time

参考サイト

簡易リファレンス
JMeterの簡単な使い方まとめ
【JMeter】負荷テスト実行はGUIから行ってはならない
今さら聞けない Apache JMeter の基本
負荷テストあれこれ-JMeter 負荷のかけ方、レポートの見方-
JMeter の利用方法(1) – Ramp-up、スレッド数、ループ回数の誤用

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした