メニューを閉じる

テクノデジタルグループ

メニューを開く

2024.08.05

開発環境・ツール

負荷試験ツールのGatlingを使ってみたメモ

JTです。
負荷試験ツール:Gatlingを使う機会があったので手順を記録しておきます。

★3.10まではgatling.bat/shによる実行でしたが、3.11以降はMaven(mvnw)を使った方法に変わっています。本記事では3.11以降の内容で更新しました

Gatlingとは

https://docs.gatling.io/reference/install/oss/

→Javaで動く負荷試験ツール。JavaのバージョンはGatlingの公式曰く
Java Version
Gatling supports 64bits OpenJDK LTS (Long Term Support) versions: 11, 17 and 21. Other JVMs such as 32bits systems or OpenJ9 are not supported.

■作業イメージ

  • 1)Windowsマシンでブラウザ経由によるシナリオを作成する
  • 2)AWS上のEC2(AmazonLinux2023)で上記シナリオを実行する

■Windowsへのインストール、シナリオ取得、負荷試験実施

Gatlingダウンロード

「Using the Bundle」
https://docs.gatling.io/reference/install/oss/#use-the-standalone-bundle
より

gatling-charts-highcharts-bundle-xxxxx-bundle.zip
をダウンロードし、作業場所に展開する

Javaのインストール

→OpenJDK 21を利用する
https://learn.microsoft.com/en-ca/java/openjdk/download#openjdk-21
→microsoft-jdk-21.0.2-windows-x64.msi
をダウンロードしてインストール
→インストール先:C:\Program Files\Microsoft\jdk-21.0.2.13-hotspot\

Windowsのシステム環境変数に設定してjavaコマンドが実行できるようにします

set JAVA_HOME

java -version
openjdk version "21.0.2" 2024-01-16 LTS
OpenJDK Runtime Environment Microsoft-8905927 (build 21.0.2+13-LTS)
OpenJDK 64-Bit Server VM Microsoft-8905927 (build 21.0.2+13-LTS, mixed mode, sharing)

シナリオ作成

展開したgatlingのディレクトリ直下で

mvnw.cmd gatling:recorder

とするとレコーダーが起動します

レコーダーによる記録方法は癖があるので以下を参照
https://qiita.com/yasuaki0206/items/c84361faef08d6788fd0

メモ:
1)ClassName にテスト用のシナリオ名を書く
2)WindowsOSのプロキシ(上記の場合localhost:8000)を有効にする

3)[Start!]を押し、ブラウザを開いて負荷をかけたい処理について記録を開始する
4)シナリオ作成が終わったらツールを閉じる

→シナリオファイルがOutputで指定したディレクトリの下に生成される

■生成されたシナリオをGatlingから実行する際は

mvnw.cmd gatling:test

で。複数のシナリオが保存されている場合は

Choose a simulation number:
     [0] computerdatabase.ComputerDatabaseSimulation
     [1] io.gatling.demo.knowledge81

のように表示されるので番号を指定して選択。
※テスト実行時はプロキシを解除しておいてください
※多重度を上げると性能不足になることが多いので、実際の負荷試験時はAWS上に実行サーバを起動して行います

■Linuxでの負荷試験シナリオ実行

参照:
https://www.jhipster.tech/jp/running-tests/

1)Javaのインストール

# install_corrett(OpenJDK)
sudo dnf install java-21-amazon-corretto-devel

# 確認
java -version
openjdk version "21.0.1" 2023-10-17 LTS
OpenJDK Runtime Environment Corretto-21.0.1.12.1 (build 21.0.1+12-LTS)
OpenJDK 64-Bit Server VM Corretto-21.0.1.12.1 (build 21.0.1+12-LTS, mixed mode, sharing)

# JAVA_HOMEセット
# セットしないとワーニングが出る:Warning: JAVA_HOME environment variable is not set.
export JAVA_HOME=/usr

2)Gatlingの取得と展開

curl -O https://repo1.maven.org/maven2/io/gatling/highcharts/gatling-charts-highcharts-bundle/3.11.5/gatling-charts-highcharts-bundle-3.11.5.zip
unzip ./gatling-charts-highcharts-bundle-3.11.5.zip 

→mvnwも含めたパッケージが展開される。

src/test/java: シミュレーション コードを配置する場所。パッケージ フォルダーの階層を尊重する必要があります。
src/test/resources: フィーダー ファイルやリクエスト本文のテンプレート、Gatling、Akka、Logback の構成ファイルなどのソース コード以外のファイル。
pom.xml: プロジェクトに関する Maven 情報。
target: テスト結果が生成される場所。

3)テストシナリオ準備

cd (ガトリング配置先)/src/test/java/以下にWindows環境で作成したClassname.javaを配置する

4)コマンドラインで実行

cd /path_to_workdir/gatling-charts-highcharts-bundle-3.11.5
./mvnw gatling:test

複数のシナリオが保存されている場合は以下で選択して実施
Choose a simulation number:
     [0] computerdatabase.ComputerDatabaseSimulation
     [1] io.gatling.demo.knowledge81

5)実行ログ確認

実行ログの下端にファイルの出力先が表示されるので、その内容を取得して確認できます

Reports generated, please open the following file: file:///path_to_log/index.html

6)実行結果を見てみる

→上記で出力されたindex.htmlを開く

※シナリオの作り方、多重度度の設定方法、また実行結果の分析方法については別途記事を作成予定です(…)

以上


【記事への感想募集中!】

記事への感想・ご意見がありましたら、ぜひフォームからご投稿ください!
  • こんな記事が読んでみたい、こんなことが知りたい、調べてほしい!という意見も募集中!
  • いただいた感想は今後の記事に活かしたいと思います!

感想フォームはこちら


【テクノデジタルではエンジニア/デザイナーを積極採用中です!】

下記項目に1つでも当てはまる方は是非、詳細ページへ!
  • 自分でアプリを作ってみたい
  • ITで世の中にワクワクを生み出したい
  • 使いやすさ、デザインにこだわったWebサイトを開発したい

採用情報の詳細はこちら


Qangaroo(カンガルー)

  • 徹底した見やすさと優れた操作性で、テストの「見える化」を実現。
  • テストの進捗が見える。開発がスマートに進む。
  • クラウド型テスト管理ツール『Qangaroo(カンガルー)』

【テクノデジタルのインフラサービス】

当社では、多数のサービスの開発実績を活かし、
アプリケーションのパフォーマンスを最大限に引き出すインフラ設計・構築を行います。
AWSなどへのクラウド移行、既存インフラの監視・運用保守も承りますので、ぜひご相談ください。
詳細は下記ページをご覧ください。

https://www.tcdigital.jp/infrastructure/

最近の記事