JMeterで負荷テストをする
実行環境
JMeterのインストールから初期設定
Javaのインストール
Javaがインストールされているか確認する。
PS C:\work> java -version java version "1.8.0_311" Java(TM) SE Runtime Environment (build 1.8.0_311-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.311-b11, mixed mode) PS C:\work>
インストールされていない場合は以下からインストールする。
https://www.java.com/ja/download/
JMeterのインストール
以下のサイトから「apache-jmeter-5.4.1.zip」をダウンロードして、任意の場所に展開する。
JMeterの日本語化
..\apache-jmeter-5.4.1\bin\jmeter.batをテキストエディタで開き、JMETER_LANGUAGEを変更する。
set JMETER_LANGUAGE=-Duser.language="en" -Duser.region="EN"
↓
set JMETER_LANGUAGE=-Duser.language="ja" -Duser.region="JP"
JMeterの起動
..\apache-jmeter-5.4.1\bin\jmeter.batをダブルクリックする。
JMeterが起動して、メニューが日本語になっていればOK。
プラグインのインストール
以下から「plugins-manager.jar」をダウンロードし、..\apache-jmeter-5.4.1\lib\extに配置する。
JMeterを起動し、メニュー > オプション > Plugins Managerを開く。
Available Pluginsから「jpgc - Standard Set」をチェックし、「Apply Changes and Restart JMeter」を押下する。
Response Times Over Timeなどのリスナーが追加されればOK。
Webサーバの用意
人様のサイトに負荷をかけるのはNGなので、Webサーバを用意する。
今回はSpring BootでWebアプリ作成する。
Spring Initializrからアプリを作成
以下からアプリの雛型をダウンロードして作成する。
コントローラの作成
package com.example.springboot; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { @GetMapping("/") public String index() { return "Greetings from Spring Boot!"; } }
アプリの起動
Intellijの場合、Applicationクラスを右クリックし、「Run 'Application.main()'」を押下すれば起動する。
ブラウザから以下のURLにアクセスし、「Greetings from Spring Boot!」が表示されればOK。
http://localhost:8080/
テスト計画の作成
テスト計画の作成
任意の名前とコメントを入力。
スレッドグループの作成
テスト計画名を右クリックし、追加 > Threads > スレッドグループを選択。
「スレッド数」「Ramp-Up 期間(秒)「ループ回数」を入力し、「Delay Thread creation until needed」にチェックをつける。
HTTPリクエストの作成
スレッドグループを右クリックし、追加 > サンプラー > HTTPリクエストを選択。
「プロトコル」「サーバ名」「ポート番号」「HTTPリクエスト」を入力。
結果をツリーで表示の作成
スレッドグループを右クリックし、追加 > リスナー > 結果をツリーで表示を選択。
実行
メニュー下の緑の三角アイコンを押すとテストを実行できる。
初回実行時はテスト計画の保存を求められるので、任意の場所に保存する。
「結果をツリーで表示」に実行結果が出力される。
テストの実行
JemeterのGUIがボトルネックになる可能性があるため、正確にテストをする場合はCUIから行う。
JemeterのGUIを閉じた状態で、以下のコマンドを実行する
.\jmeter-n.cmd テスト計画ファイルパス
PS C:\work> cd C:\tools\apache-jmeter-5.4.1\bin PS C:\tools\apache-jmeter-5.4.1\bin> .\jmeter-n.cmd .\シナリオ\サンプル.jmx Creating summariser <summary> Created the tree successfully using サンプル.jmx Starting standalone test @ Wed Nov 17 07:25:58 JST 2021 (1637101558216) Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445 summary + 596 in 00:00:01 = 400.3/s Avg: 460 Min: 1 Max: 980 Err: 0 (0.00%) Active: 4 Started: 599 Finished: 595 summary + 9404 in 00:00:09 = 1046.1/s Avg: 2 Min: 0 Max: 185 Err: 0 (0.00%) Active: 0 Started: 10000 Finished: 10000 summary = 10000 in 00:00:10 = 954.2/s Avg: 29 Min: 0 Max: 980 Err: 0 (0.00%) Tidying up ... @ Wed Nov 17 07:26:08 JST 2021 (1637101568991) ... end of run
テストの結果確認
実行結果はテスト計画名のjtlファイルに保存されている。
PS C:\tools\apache-jmeter-5.4.1\bin> ls シナリオ ディレクトリ: C:\tools\apache-jmeter-5.4.1\bin\シナリオ Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2021/11/17 8:17 4979 サンプル.jmx -a---- 2021/11/17 8:18 3822019 サンプル.jtl -a---- 2021/11/17 8:18 2772252 サンプル.log
JemeterをGUIで起動し、任意のリスナーを選択し、ファイル名を指定すれば結果が表示される。