JMeterを使ってみた記録

  • 環境
    • Windows10 Pro バージョン1909
    • java version "1.8.0_251"

JMeterで負荷をかけたいのです。

アプリケーションにおいて、パフォーマンスは重要な要素です。また、どの程度の負荷まで耐えられるのかも、同じく重要な要素となります。JMeterを使用して、このような重要な要素を計測し、より信頼性の高いアプリケーションの開発・改良に役立てましょう。

1. JMeterの基本 | TECHSCORE(テックスコア)

やりたいこと

ローカル環境で実行しているWebアプリケーションで任意の操作中に負荷をかけたい。

JMeterをインストールします。

  1. Apache JMeter - Download Apache JMeterを表示する
  2. [Binaries]からzipファイルをダウンロードする
    • f:id:ponsuke_tarou:20201021093922p:plain
    • 今回は「apache-jmeter-5.3.zip」をダウンロードした
  3. zipファイルを解凍して任意の場所に配置する
# zipファイルを解凍して「/c/apps/」に配置する
$ unzip apache-jmeter-5.3.zip -d /c/apps/
Archive:  apache-jmeter-5.3.zip
   creating: /c/apps/apache-jmeter-5.3/
  inflating: /c/apps/apache-jmeter-5.3/LICENSE
#...省略...
  inflating: /c/apps/apache-jmeter-5.3/docs/api/org/apache/log/package-summary.html
  inflating: /c/apps/apache-jmeter-5.3/docs/api/org/apache/log/package-tree.html

# 「apache-jmeter-5.3/bin/」配下のコマンドでバージョンを確認する
WARNING: package sun.awt.X11 not in java.desktop
    _    ____   _    ____ _   _ _____       _ __  __ _____ _____ _____ ____
   / \  |  _ \ / \  / ___| | | | ____|     | |  \/  | ____|_   _| ____|  _ \
  / _ \ | |_) / _ \| |   | |_| |  _|    _  | | |\/| |  _|   | | |  _| | |_) |
 / ___ \|  __/ ___ \ |___|  _  | |___  | |_| | |  | | |___  | | | |___|  _ <
/_/   \_\_| /_/   \_\____|_| |_|_____|  \___/|_|  |_|_____| |_| |_____|_| \_\ 5.3

Copyright (c) 1999-2020 The Apache Software Foundation

JMeterの画面を起動します。

# apache-jmeter-5.3/bin/jmeterを実行すると画面が起動する
$ /c/apps/apache-jmeter-5.3/bin/jmeter
WARNING: package sun.awt.X11 not in java.desktop
================================================================================
Don't use GUI mode for load testing !, only for Test creation and Test debugging.
For load testing, use CLI Mode (was NON GUI):
   jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
& increase Java Heap to meet your test requirements:
   Modify current env variable HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m" in the jmeter batch file
Check : https://jmeter.apache.org/usermanual/best-practices.html
================================================================================

f:id:ponsuke_tarou:20201021105049p:plain

メニューを日本語表示にする

初期段階ではメニューが英語になっているので日本語表示にします。

  1. [Option] > [Choose Language] > [Japanese]
  2. メニューが日本語表示になる f:id:ponsuke_tarou:20201021134355p:plain

画面の操作を記録する(書き途中)

Thread Groupを作成する

  1. 左に表示されている[Test Plan]を右クリック
  2. [追加] > [Thread(Users)] > [スレッドグループ]で追加する
  3. 表示された画面で以下を設定する
項目 意味 設定値
名前 任意、初めてなのでデフォルトのまま
コメント 任意の値、とりあえず未設定
サンプルエラー後のアクション テスト停止
スレッド数 1回の実行でのアクセス数 初めてなのでデフォルトのまま
Ramp-Up期間 全リクエストの作成時間 60秒
ループ回数 シナリオを繰り返す回数 初めてなのでデフォルトのまま

各項目の意味は、【図解】はじめてでもわかるJMeterの使い方 - RAKUS Developers Blog | ラクス エンジニアブログが図まであってとても分かりやすいです。

記録コントローラーを作成する

  1. スレッドグループを右クリック
  2. [追加] > [ロジックコントローラー] > [記録コントローラー]で追加する
  3. 表示された画面で以下を設定する
項目 設定値
名前 任意、初めてなのでデフォルトのまま
コメント 任意の値、とりあえず未設定

HTTPプロキシサーバを作成する

  1. TestPlanを右クリック
  2. [追加] > [Non-Test エレメント] > [HTTP プロキシサーバ]で追加する
  3. 表示された画面で以下を設定する
項目 設定値
名前 任意、初めてなのでデフォルトのまま
コメント 任意の値、とりあえず未設定
ポート 使用していないポート番号、デフォルトの8888はちょうど使っていないのでそのまま
対象となるコントローラ 作成した記録コントローラを選択

プロキシを設定する

今回使用するのはChromeです。

  1. Win + R > [ファイル名を指定して実行]ダイアログを表示
  2. control inetcpl.cplを入力して[OK]ボタンで[インターネットのプロパティ]ダイアログを開く
  3. [接続]タブ > [LANの設定]ボタンでダイアログを開く
  4. [LANにプロキシサーバーを使用する] > ON
  5. 以下を設定し、[OK]ボタンで保存する
項目 設定値
アドレス localhost
ポート JMeterでHTTPプロキシサーバのポートに設定した値

f:id:ponsuke_tarou:20201021145844p:plain

画面の操作を記録する

  1. HTTP プロキシサーバの画面にある[開始]ボタンで記録を開始する
  2. ダイアログが表示されるので[OK]ボタンで進める
    • f:id:ponsuke_tarou:20201021151653p:plain
  3. ダイアログがさらに表示されるけど気にせずブラウザ画面の操作を開始する
    • f:id:ponsuke_tarou:20201021151810p:plain
  4. 操作を終了する場合は上記ダイアログの[停止]ボタンで終了する

localhostで記録する場合の注意ポイント

localhost:{アプリサーバのポート}/{アプリのURL}で画面の操作を記録をしたところ記録されたポートがアプリサーバの管理画面のポート(Payaraを使ったので4848)の記録しか取れませんでした。アプリでの操作が記録されなかったのです。

f:id:ponsuke_tarou:20201021162659p:plain
右側の[記録コントローラ]にぶら下がったHTTPリクエストの画面

  • localhostで記録する場合
    1. ipconfigでPCのIPアドレスを確認する
    2. {PCのIPアドレス}:{アプリサーバのポート}/{アプリのURL}をブラウザで表示する
      • この時点では「このサイトにアクセスできません」となって画面が表示できません。
    3. 「プロキシを設定する」をする
    4. HTTP プロキシサーバの画面にある[開始]ボタンで記録を開始する
    5. ブラウザをリロードするとアプリケーションの画面が表示される
    6. 操作を記録する
  • 参考 : たぬきさんのメモ帳:【JMeter】HTTPプロキシサーバとアプリケーションのお話