ガトリングを使用した負荷テストの例
1. 概要
previous tutorialでは、Gatlingを使用してカスタムWebアプリケーションの負荷テストを行う方法を説明しました。
この記事では、ガトリングストレスツールを使用して、このWebサイトのステージング環境のパフォーマンスを測定します。
2. テストシナリオ
まず、主な使用シナリオを設定しましょう。これは、サイトを閲覧している可能性のある一般的なユーザーに近いものです。
-
ホームページに行く
-
ホームページから記事を開く
-
ガイド/レストに移動
-
RESTカテゴリに移動
-
完全なアーカイブに移動
-
アーカイブから記事を開く
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の簡単な初期テストを行いました。