ガトリングによる負荷テスト

ガトリングを使用した負荷テストの例

1. 概要

previous tutorialでは、Gatlingを使用してカスタムWebアプリケーションの負荷テストを行う方法を説明しました。

この記事では、ガトリングストレスツールを使用して、このWebサイトのステージング環境のパフォーマンスを測定します。

2. テストシナリオ

まず、主な使用シナリオを設定しましょう。これは、サイトを閲覧している可能性のある一般的なユーザーに近いものです。

  1. ホームページに行く

  2. ホームページから記事を開く

  3. ガイド/レストに移動

  4. RESTカテゴリに移動

  5. 完全なアーカイブに移動

  6. アーカイブから記事を開く

3. シナリオを記録する

次に、ガトリングレコーダーを使用してシナリオを記録します–次のとおりです。

$GATLING_HOME/bin/recorder.sh

Windowsユーザーの場合:

%GATLING_HOME%\bin\recorder.bat

注:GATLING_HOMEはGatlingのインストールディレクトリです。

two modes for Gatling Recorderがあります:HTTPプロキシとHARコンバーター。

HTTPプロキシモードについてはprevious tutorialで詳しく説明したので、HARコンバーターオプションを見てみましょう。

3.1. HARコンバーター

HARはHTTPアーカイブの略で、基本的にrecords the full information about a browsing sessionの形式です。

ブラウザからHARファイルを取得し、Gatling Recorderを使用してシミュレーションに変換できます。

Chromeデベロッパーツールを使用してHARファイルを作成します。

  • メニュー→その他のツール→開発者ツール

  • Networkタブに移動します

  • Preserve logがチェックされていることを確認してください

  • Webサイトのナビゲートが完了したら、エクスポートするリクエストを右クリックします

  • 次に、すべてをHARとしてコピーを選択します

  • それらをファイルに貼り付け、Gatlingレコーダーからインポートします

ガトリングレコーダーを好みに合わせて調整し終えたら、[開始]をクリックします。

出力フォルダはデフォルトでGATLING_HOME/user-files-simulationsであることに注意してください

4. シミュレーション

生成されたシミュレーションファイルも同様にScalaで記述されています。 通常は問題ありませんが、読みやすくはないため、クリーンアップするためにいくつかの調整を行います。 最終的なシミュレーションは次のとおりです。

class RestSimulation extends Simulation {

    val httpProtocol = http.baseURL("http://staging.example.com")

    val scn = scenario("RestSimulation")
      .exec(http("home").get("/"))
      .pause(23)
      .exec(http("article_1").get("/spring-rest-api-metrics"))
      .pause(39)
      .exec(http("rest_series").get("/rest-with-spring-series"))
      .pause(60)
      .exec(http("rest_category").get("/category/rest/"))
      .pause(26)
      .exec(http("archive").get("/full_archive"))
      .pause(70)
      .exec(http("article_2").get("/spring-data-rest-intro"))

    setUp(scn.inject(atOnceUsers(1))).protocols(httpProtocol)
}

ここで重要な注意点は、完全なシミュレーションファイルがはるかに大きいことです。ここでは、簡単にするためにwe didn’t include static resourcesを使用します。

5. 負荷テストを実行する

これで、次のようにシミュレーションを実行できます。

$GATLING_HOME/bin/gatling.sh

Windowsユーザーの場合:

%GATLING_HOME%\bin\gatling.bat

ガトリングツールはGATLING_HOME/user-files-simulationsをスキャンし、見つかったすべてのシミュレーションを一覧表示して選択できるようにします。

シミュレーションを実行した後の結果は次のようになります。

1人のユーザーの場合:

> request count                                304 (OK=304    KO=0)
> min response time                             75 (OK=75     KO=-)
> max response time                          13745 (OK=13745  KO=-)
> mean response time                          1102 (OK=1102   KO=-)
> std deviation                               1728 (OK=1728   KO=-)
> response time 50th percentile                660 (OK=660    KO=-)
> response time 75th percentile               1006 (OK=1006   KO=-)
> mean requests/sec                           0.53 (OK=0.53   KO=-)
---- Response Time Distribution ------------------------------------
> t < 800 ms                                           183 ( 60%)
> 800 ms < t < 1200 ms                                  54 ( 18%)
> t > 1200 ms                                           67 ( 22%)
> failed                                                 0 (  0%)

5人の同時ユーザーの場合:

> request count                               1520 (OK=1520   KO=0)
> min response time                             70 (OK=70     KO=-)
> max response time                          30289 (OK=30289  KO=-)
> mean response time                          1248 (OK=1248   KO=-)
> std deviation                               2079 (OK=2079   KO=-)
> response time 50th percentile                504 (OK=504    KO=-)
> response time 75th percentile               1440 (OK=1440   KO=-)
> mean requests/sec                          2.411 (OK=2.411  KO=-)
---- Response Time Distribution ------------------------------------
> t < 800 ms                                           943 ( 62%)
> 800 ms < t < 1200 ms                                 138 (  9%)
> t > 1200 ms                                          439 ( 29%)
> failed                                                 0 (  0%)

10人の同時ユーザーの場合:

> request count                               3058 (OK=3018   KO=40)
> min response time                              0 (OK=69     KO=0)
> max response time                          44916 (OK=44916  KO=30094)
> mean response time                          2193 (OK=2063   KO=11996)
> std deviation                               4185 (OK=3953   KO=7888)
> response time 50th percentile                506 (OK=494    KO=13670)
> response time 75th percentile               2035 (OK=1976   KO=15835)
> mean requests/sec                          3.208 (OK=3.166  KO=0.042)
---- Response Time Distribution ----------------------------------------
> t < 800 ms                                          1752 ( 57%)
> 800 ms < t < 1200 ms                                 220 (  7%)
> t > 1200 ms                                         1046 ( 34%)
> failed                                                40 (  1%)

10人の同時ユーザーをテストしたときに、一部のリクエストが失敗したことに注意してください。これは、ステージング環境がその種の負荷を処理できないためです。

6. 結論

この簡単な記事では、Gatlingでテストシナリオを記録するHARオプションについて説明し、example.comの簡単な初期テストを行いました。