ガトリングによる負荷テスト
1概要
リンク:/Introduction-to-gatling[前回のチュートリアル]で、Gatlingを使用してカスタムWebアプリケーションをロードテストする方法を説明しました。
この記事では、Gatlingストレスツールを使用してこのWebサイトのステージング環境のパフォーマンスを測定します。
2テストシナリオ
最初に私達の主な使用法のシナリオを設定しましょう – それはサイトを閲覧しているかもしれない典型的なユーザーに近づくものです:
-
ホームページへ
-
ホームページから記事を開く
-
ガイド/RESTへ
-
RESTカテゴリに移動する
-
フルアーカイブへ
-
アーカイブから記事を開く
3シナリオを記録する
次のように、Gatlingレコーダーを使用してシナリオを記録します。
$GATLING__HOME/bin/recorder.sh
そしてWindowsユーザーのために:
%GATLING__HOME%\bin\recorder.bat
注意:
GATLING
HOME__はGatlingのインストールディレクトリです。
Gatling Recorderには、HTTPプロキシとHARコンバータの2つのモードがあります。
HTTPプロキシモードについては、リンク:/Introduction-to-gatling[前のチュートリアル]で詳細に説明しました – では、HAR Converterオプションを見てみましょう。
3.1. HARコンバーター
HARはHTTP Archiveの略です – これは基本的には
ブラウジングセッションに関する完全な情報を記録するフォーマットです
。
ブラウザからHARファイルを入手し、Gatling Recorderを使用してそれをシミュレーションに変換できます。
Chromeデベロッパーツールを使用してHARファイルを作成します。
-
メニュー – >その他のツール – >開発者ツール
-
[ネットワーク]タブに移動します
-
Preserve log
がチェックされていることを確認してください -
あなたがウェブサイトをナビゲートし終わった後、要求を右クリックしてください
エクスポートしたい
** 次に、[Copy All to HAR]を選択します。
-
ファイルに貼り付けて、Gatlingレコーダーからインポートする
Gatlingレコーダーを好みに合わせて調整したら、[開始]をクリックします。
出力フォルダはデフォルトで
GATLING
HOME/user-files-simulations__です。
4シミュレーション
生成されたシミュレーションファイルも同様にScalaで書かれています。一般的には問題ありませんが、見やすくはありません。クリーンアップのための調整を行います。これが最終的なシミュレーションです。
class RestSimulation extends Simulation {
val httpProtocol = http.baseURL("https://staging.baeldung.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)
}
ここでの重要な注意点は、完全なシミュレーションファイルがはるかに大きいことです。ここでは、わかりやすくするために、
静的リソースを含めていません
。
** 5負荷テストを実行する
**
これで、次のようにシミュレーションを実行できます。
$GATLING__HOME/bin/gatling.sh
そしてWindowsユーザーのために:
%GATLING__HOME%\bin\gatling.bat
Gatlingツールは
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オプションとbaeldung.comの簡単な初期テストについて説明しました。