1. 概要

Gatlingは負荷テストツールであり、 HTTP プロトコルの優れたサポートが付属しているため、HTTPサーバーの負荷テストに最適です。

このクイックガイドでは、HTTPサーバーの負荷テストのための簡単なシナリオセットアップする方法を説明します。

GatlingシミュレーションスクリプトはScalaで記述されていますが、心配しないでください。このツールは、シナリオを記録できるGUIを提供します。 シナリオの記録が終了したら、GUIはシミュレーションを表すScalaスクリプトを作成します。

シミュレーションを実行すると、すぐに提示できるHTMLレポートができます。

最後になりましたが、Gatlingのアーキテクチャは非同期です。 この種のアーキテクチャでは、仮想ユーザーを専用スレッドではなくメッセージとして実装できるため、リソースが非常に安価になります。 したがって、何千もの同時仮想ユーザーを実行することは問題ではありません。

コアエンジンは実際にはプロトコルに依存しないであるため、他のプロトコルのサポートを実装することは完全に可能です。 たとえば、Gatlingは現在、JMSサポートも出荷しています。

2. アーキタイプを使用したプロジェクトの作成

A Gatlingバンドルを.zipとして取得できますが、GatlingのMavenアーキタイプを使用することを選択します。 これにより、Gatlingを統合してIDEに実行し、バージョン管理システムでプロジェクトを簡単に維持できるようになります。 ガトリングにはJDK8が必要なので注意してください。

コマンドラインから次のように入力します。

mvn archetype:generate

次に、プロンプトが表示されたら:

Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains):

タイプ:

gatling

次に、次のように表示されます。

Choose archetype:
1: remote -> 
  io.gatling.highcharts:gatling-highcharts-maven-archetype (gatling-highcharts-maven-archetype)

タイプ

1

アーキタイプを選択してから、使用するバージョンを選択します(最新バージョンを選択します)。

アーキタイプの作成を確認する前に、クラスの groupId ArtifactId version 、およびpackageの名前を選択します。

アーキタイプをIDEにインポートして終了します。たとえば、 Scala IDE (Eclipseベース)または IntelliJIDEAにインポートします。

3. シナリオを定義する

レコーダを起動する前に、シナリオを定義する必要があります。 これは、ユーザーがWebアプリケーションをナビゲートしたときに実際に何が起こるかを表したものになります。

このチュートリアルでは、サンプルの目的でGatlingのチームによって提供され、URL http://computer-database.gatling.ioでホストされているアプリケーションを使用します。

単純なシナリオは次のとおりです。

  • ユーザーがアプリケーションに到着します。
  • ユーザーは「amstrad」を検索します。
  • ユーザーは、関連するモデルの1つを開きます。
  • ユーザーはホームページに戻ります。
  • ユーザーはページを繰り返します。

4. レコーダの設定

まず、IDEからRecorderクラスを起動します。 GUIを起動すると、要求と応答の記録方法を構成できます。 次のオプションを選択します。

  • 8000リスニングポートとして
  • org.baeldung.simulationパッケージ
  • RecordedSimulationクラス名
  • リダイレクトをフォローしますか?がチェックされています
  • 自動リファラー?チェック済み
  • ブラックリストファーストフィルター戦略が選択されました
  • ブラックリストフィルターの。*\。css。*\。js。*\。ico

 

次に、構成中に選択した定義済みのポート( 8000 )を使用するようにブラウザーを構成する必要があります。 これは、Recorderがナビゲーションをキャプチャできるようにするためにブラウザが接続する必要のあるポートです。

Firefoxの操作方法は次のとおりです。ブラウザの詳細設定を開き、[ネットワーク]パネルに移動して、接続設定を更新します。

 

5. シナリオの記録

すべてが構成されたので、上記で定義したシナリオを記録できます。 手順は次のとおりです。

  1. [開始]ボタンをクリックして記録を開始します
  2. Webサイトにアクセスします: http://computer-database.gatling.io
  3. 名前に「amstrad」が含まれるモデルを検索する
  4. 「AmstradCPC6128」を選択します
  5. ホームページに戻る
  6. 次へボタンをクリックして、モデルページを数回繰り返します
  7. 「停止して保存」ボタンをクリックします

シミュレーションは、構成中にRecordedSimulation.scalaという名前で定義されたパッケージorg.baeldungで生成されます。

6. Mavenでシミュレーションを実行する

記録されたシミュレーションを実行するには、pom.xmlを更新する必要があります。

<plugin>
    <groupId>io.gatling</groupId>
    <artifactId>gatling-maven-plugin</artifactId>
    <version>2.2.4</version>
    <executions>
        <execution>
            <phase>test</phase>
            <goals><goal>execute</goal></goals>
            <configuration> 
                <disableCompiler>true</disableCompiler> 
            </configuration>
        </execution>
    </executions>
</plugin>

これにより、テストフェーズでシミュレーションを実行できます。 テストを開始するには、次のコマンドを実行します。

mvn test

シミュレーションが完了すると、コンソールにHTMLレポートへのパスが表示されます。

注:構成 true が使用されます。これは、MavenでScalaを使用するためです。このフラグにより、シミュレーションを2回コンパイルすることがなくなります。 詳細については、 Gatlingdocsを参照してください。

7. 結果の確認

提案された場所でindex.htmlを開くと、レポートは次のようになります。

8. 結論

このチュートリアルでは、Gatlingを使用したHTTPサーバーの負荷テストについて説明しました。 ツールを使用すると、GUIインターフェイスのヘルプを使用して、定義されたシナリオに基づいてシミュレーションを記録できます。 録音が完了したら、テストを開始できます。 テストレポートは、HTML履歴書の形式になります。

この例を構築するために、Mavenアーキタイプを使用することを選択しました。 これは、 Gatlingを統合してIDEに実行し、バージョン管理システムでプロジェクトを簡単に維持できるようにするのに役立ちます。

サンプルコードはGitHubプロジェクトにあります。