Load Tester (multiple remote servers) Powered by Apache JMeter™は、Apache JMeter™をMicrosoft Azure上の複数のサーバーで稼働させ、大規模な負荷テストができるものです。

JMeterではリクエストごとに異なるパラメーター値を渡したい場合、CSVファイルにその値を用意しておくことができます。

JMeterのリモートテストを実施する場合、このCSVファイルをすべてのJMeterサーバーに配布する必要があります。
ここでは、その方法を説明します。

手順概要

  1. CSVファイルを用意する
  2. CSV Data Set ConfigでそのCSVファイルを参照し設定する
  3. サンプラーでそのパラメーターを利用する
  4. リスナーを追加する
  5. テストを実施する
  6. 結果を確認する

手順詳細

すべてのJMeterサーバーで同じCSVファイルを利用する場合は、そのファイルを用意して共有ディスクに配置します。
JMeterサーバーごとに異なるCSVファイルを利用する場合は、サーバーごとにファイルを用意して共有ディスクに配置します。
ここでは、このそれぞれの方法を説明します。

すべてのJMeterサーバーで同じCSVファイルを利用する場合

  1. CSVファイルを用意する
    JMeterクライアントで、/mnt/jmuserdata 配下にテストデータとなるCSVファイルを作成します。
    クライアントおよびサーバーの /mnt/jmuserdata にはネットワークディスクがマウントされています。

    例) /mnt/jmuserdata/prefecture.csv

    code,prefecture
    01,Hokkaido
    02,Aomori
    03,Iwate
    04,Miyagi
    05,Akita
    06,Yamagata
    07,Fukushima
    08,Ibaraki
    09,Tochigi
    10,Gunma
    
  1. CSV Data Set ConfigでそのCSVファイルを参照し設定する
    1. JMeterを起動する
    2. Test PlanにThread Groupを追加する
      Add (追加) > Threads (Users) > Thread Group (スレッドグループ)
      "Loop Count (ループ回数)" を "3" などとしておく
    3. Test PlanあるいはThread Groupに "CSV Data Set Config" を追加する
      Add (追加) > Config Element (設定エレメント) > CSV Data Set Config
      CSV Data Set Config
      • Configure the CSV Data Source
        • Filename: 先に作成したCSVファイル名
        • Variable Names (comma-delimited): CSVファイルにヘッダ行がない場合は、列名をカンマ区切りで記入します。
  1. Samplerでそのパラメーターを利用する
    今回はCSVファイルのデータをHTTP RequestサンプラーでGETリクエストのQueryStringとして渡すこととします。
    CSVファイル内の値は、"${列名}" とすることで渡されます。

    Thread GroupにHTTP Requestサンプラーを追加する
    Add (追加) > Sampler (サンプラー) > HTTP Request (HTTP リクエスト)
    HTTP Request

    • Web Server
      • Protocol [http]: プロトコル (http or https)
      • Server Name or IP: サーバー名あるいはIPアドレス
    • HTTP Request
      • (Method) GET
    • Parameters
      [Add] をクリックし、パラメーターを追加する
      • Name: パラメーター名 (例: prefecture)
      • Value: パラメーター値 (例: ${prefecture})
  1. リスナーを追加する
    動作確認のためにTest Planあるいは同じThread Groupに"View Results Tree"を追加します。
    Add (追加) > Listener (リスナー) > View Results Tree (結果をツリーで表示)
  1. テストを実施する
    メニューの Run (実行) > Remote Start All (全て開始(リモート))
  1. 結果を確認する
    View Results TreeでいくつかのHTTP Requestを確認します。
    • Sampler result タブ
      Thread Nameにアクセス元となったJMeter ServerのIPアドレスが表示されています。
      View Results Tree > Sampler result
    • Request > Request Body タブ
      urlのQueryStringにCSVファイルの値が指定されています。
      View Results Tree > Request > Request Body

JMeterサーバーごとに異なるCSVファイルを利用する場合

今回は、3台のJMeterサーバーでそれぞれ別々のCSVファイルを利用してリクエストをしてみます。
前述の同じCSVファイルを利用した設定から変更していきます。

  1. CSVファイルを用意する
    1. 各JMeterサーバーのIPアドレスを確認する
      CSVファイルのファイル名にJMeterサーバーのIPアドレスを含めることで、JMeterサーバーが利用するCSVファイルを判断できるようにします。
      JMeterのメニュー > Run (実行) > Remote Start (開始(リモート)) を開き、そこに表示されるIPアドレスの一覧をメモします。(ポート番号は不要です)
      Remote servers

    2. ファイル名(あるいはディレクトリ名)にIPアドレスを含んだCSVファイルをJMeterサーバー分作成します。

      例)
      /mnt/jmuserdata/pref10.0.2.4.csv

      code,prefecture
      01,Hokkaido
      02,Aomori
      03,Iwate
      04,Miyagi
      05,Akita
      06,Yamagata
      07,Fukushima
      08,Ibaraki
      09,Tochigi
      10,Gunma
      

      /mnt/jmuserdata/pref10.0.2.5.csv

      11,Saitama
      12,Chiba
      13,Tokyo
      14,Kanagawa
      15,Niigata
      16,Toyama
      17,Ishikawa
      18,Fukui
      19,Yamanashi
      20,Nagano
      

      /mnt/jmuserdata/pref10.0.2.6.csv

      21,Gifu
      22,Shizuoka
      23,Aichi
      24,Mie
      25,Shiga
      26,Kyoto
      27,Osaka
      28,Hyogo
      29,Nara
      30,Wakayama
      
  1. CSV Data Set ConfigでJMeterサーバー自身のIPアドレスが名前に含まれているCSVファイルを参照する
    1. "CSV Data Set Config" のFilenameに、IPアドレス部分を "${__machineIP}" と置き換えたファイル名を記入します。
      例: /mnt/jmuserdata/pref${__machineIP}.csv
      CSV Data Set Config
  1. テストを実施する
    メニューの Run (実行) > Remote Start All (全て開始(リモート))
    ※ サンプラーやリスナーは変更不要です。
  1. 結果を確認する
    View Results TreeでいくつかのHTTP Requestを確認します。
    Sampler resultに出力されるIPアドレスとRequest > Request Bodyに出力されるQueryStringの組み合わせが、作成したCSVファイルとマッチしていることを確認してください。