Apache JMeter をインストールして WEBサービスの負荷テストをしてみる

2019年12月18日Java,開発

おはようございます。

大分久しぶりの技術系記事ですね。

JMeter は以前使ったことがあるのでが、全然覚えていなかったので備忘的な意味も込めて。

スポンサーリンク

Javaのインストール

Apache JMeter を動かすのに必要です。

次の記事を参考にして予め Java をインストールしてください。

(バージョンはインストールする Apache JMeter の要件に合わせてください)

JDK9.0.1 の 新機能は?とりあえずインストールしてみる。

Apache JMeter のインストール

ダウンロード

次のサイトにアクセスします。

https://jmeter.apache.org/download_jmeter.cgi

Apache JMeter 公式サイト
Apache JMeter 公式サイト

ダウンロードリンクより、お使いの環境に合わせたファイルをダウンロードします。

今回は Windows10 を使うので、zipファイルとしました。

日本語で起動するバッチを作成

ダウンロードしたファイルを展開し、配下にある「bin」フォルダに「jmeter.bat」という起動バッチがありますが、

「jmeter.bat」で起動するとデフォルトの設定が英語となりますので、日本語で起動するための起動バッチを作成します。

「jmeter.ja.bat」を作成し、次の内容で保存してください。

確認

作成した「jmeter.ja.bat」を実行します。

起動後画面
起動後画面

メニューやラベルが日本語化されていればOKです。

テスト計画の作成

実際に JMeter から WEBサービスへリクエストを送るテスト計画を作成します。

デフォルトで、「テスト計画」という項目が用意されていますので、そこに設定していきます。

スレッドグループの作成

処理のグループをまとめる「スレッドグループ」を追加します。

スレッドグループの追加
スレッドグループの追加

ツリーの「テスト計画」を右クリックし、「追加」>「Threads」>「スレッドグループ」を選択します。

続いて、追加したスレッドのプロパティを設定します。

スレッドグループのプロパティ
スレッドグループのプロパティ

ひとまず、対象のWEBシステムへ正常に接続できるか確認するため、スレッド数、Ramp-Up期間、ループ回数に全て「1」を設定します。

設定値については次の通り。

 

キー説明
スレッド数並行して処理を実行する数
Ramp-Up期間n秒毎にスレッド数分処理を実行
ループ回数上記設定で処理を n回繰り返す

サンプラーの追加

今回はWEBサービスへのリクエストで負荷試験を行うため、「HTTPリクエスト」サンプラーを利用します。

サンプラーの追加
サンプラーの追加

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

続いてリクエストのパラメータを設定。

リクエストパラメータの設定
リクエストパラメータの設定

ここら辺は、WEBサービスを作ってる方であれば説明不要ですよね。

リスナーの追加

処理の結果を確認するためのリスナーを追加します。

リスナーの追加
リスナーの追加

「HTTPリクエスト」を右クリックし「追加」>「リスナー」>「結果をツリーで表示」を選択します。

リスナーは目的別に色々と種類がありますが、今回は接続確認なので「ツリー」とします。

実行、結果確認

作成したテスト計画を実行します。

テスト計画の実行
テスト計画の実行

上部メニューにある緑色の三角ボタンを押下してください。

結果画面
結果画面

今回は1回の処理なので、1件だけツリーに表示されました。

HTTPレスポンスステータスコードが正常であれば、緑色のマークで表示されます。

右側パネルの「応答データ」を開き、レスポンスの内容を確認して問題なければ正常にリクエストが処理されたことになります。

負荷テスト

スレッドのプロパティの値を非機能要件に合わせて変更し、リスナーに新たに「統計レポート」を追加して、テスト計画を実行します。

統計レポート
統計レポート

上記は「10人が5秒間隔で10回アクセスして画面を表示」したイメージ。

項目については次の通り。

 

ヘッダ説明
Labelサンプラーの名称
#Sampleサンプルの回数
Average平均応答時間(ms)
Median応答時間の中央値(ms)
n%Line応答時間のパーセンタイル
Min応答時間の最小値(ms)
Max応答時間の最大値(ms)
Error%エラーとなった割合
Thhrougput1分あたりの応答件数
Received KB/sec受け取ったキロバイト/秒で測定されたスループット
Sent KB/sec送信されたキロバイト/秒で測定されたスループット

 

1件ずつの処理結果を確認したい場合は「結果を表で確認」リスナーを利用します。

結果を表で確認リスナー
結果を表で確認リスナー

項目については次の通り。

 

ヘッダ説明
Sample#リクエストの番号
StartTimeリクエストを開始した時間
ThreadNameスレッド名
Labelサンプラー名
Sample Timeリクエストの送信からレスポンスを受け終わるまでの時間
Statusレスポンスステータス
Baytes受信データバイト数
Sent Bytes送信データバイト数
Latencyリクエストを送信してからレスポンスを受けるまでの時間
Connect Timeサーバーとの接続確率にかかった時間

予想される最大同時接続人数で、リクエストを無制限に送り続けて画面から操作することで体感速度も確認することができますね。

まとめ

今回はひとまずここまで。

リスナーも他に色々ありますし、画面の操作を記録して複雑なテストを行うこともできます。

また時間があったときに色々と試せたらと思います。

何かのお役に立てれば。

ではでは。

 

スポンサーリンク


関連するコンテンツ

2019年12月18日Java,開発Java,検証ツール

Posted by doradora