Apache JMeter をインストールして WEBサービスの負荷テストをしてみる
おはようございます。
大分久しぶりの技術系記事ですね。
JMeter は以前使ったことがあるのでが、全然覚えていなかったので備忘的な意味も込めて。
スポンサーリンク
Javaのインストール
Apache JMeter を動かすのに必要です。
次の記事を参考にして予め Java をインストールしてください。
(バージョンはインストールする Apache JMeter の要件に合わせてください)
JDK9.0.1 の 新機能は?とりあえずインストールしてみる。
Apache JMeter のインストール
ダウンロード
次のサイトにアクセスします。
https://jmeter.apache.org/download_jmeter.cgi
ダウンロードリンクより、お使いの環境に合わせたファイルをダウンロードします。
今回は Windows10 を使うので、zipファイルとしました。
日本語で起動するバッチを作成
ダウンロードしたファイルを展開し、配下にある「bin」フォルダに「jmeter.bat」という起動バッチがありますが、
「jmeter.bat」で起動するとデフォルトの設定が英語となりますので、日本語で起動するための起動バッチを作成します。
「jmeter.ja.bat」を作成し、次の内容で保存してください。
1 2 3 4 5 | @echo off REM 日本語に設定して JMeter を起動 SETJVM_ARGS="-Duser.language=ja" jmeter.bat exit |
確認
作成した「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% | エラーとなった割合 |
Thhrougput | 1分あたりの応答件数 |
Received KB/sec | 受け取ったキロバイト/秒で測定されたスループット |
Sent KB/sec | 送信されたキロバイト/秒で測定されたスループット |
1件ずつの処理結果を確認したい場合は「結果を表で確認」リスナーを利用します。
項目については次の通り。
ヘッダ | 説明 |
---|---|
Sample# | リクエストの番号 |
StartTime | リクエストを開始した時間 |
ThreadName | スレッド名 |
Label | サンプラー名 |
Sample Time | リクエストの送信からレスポンスを受け終わるまでの時間 |
Status | レスポンスステータス |
Baytes | 受信データバイト数 |
Sent Bytes | 送信データバイト数 |
Latency | リクエストを送信してからレスポンスを受けるまでの時間 |
Connect Time | サーバーとの接続確率にかかった時間 |
予想される最大同時接続人数で、リクエストを無制限に送り続けて画面から操作することで体感速度も確認することができますね。
まとめ
今回はひとまずここまで。
リスナーも他に色々ありますし、画面の操作を記録して複雑なテストを行うこともできます。
また時間があったときに色々と試せたらと思います。
何かのお役に立てれば。
ではでは。
ディスカッション
コメント一覧
まだ、コメントがありません