負荷テストツールLocust学習5:分散モード
はじめに
こんにちは、SHIFT DevOps推進2グループの李です。
前回はLocustのGUIとCLIの書き方について紹介しました。
負荷テストを実施する時に負荷が足りないことがよくありました。
複数PCで実行する場合レポートの整理も大変でした。
Locustの分散モードを使えば設定は簡単にできますし、レポートも自動的にマスターPCにまとめて出力できます。
今回はLocustの特長である分散モードを紹介しようと思います。
下記が今回使用するソフトウェアです。
Visual Studio Code:最新版 https://code.visualstudio.com/
Python:3.11.1 https://www.python.org/
Locust:2.14.2 https://locust.io/
内容を5つのシリーズに分けて紹介したいと思います。
連載目次:
(最終回)負荷テストツールLocust学習5:Locustの分散モード
分散モードとは
分散モードとは複数のマシンにシナリオかユーザ数を分散して実行することです。PC 1台で負荷テストを実行するとサーバーに対して負荷はあまり掛からないかもしれません。
この際に分散モードを使って、マスターPCと複数ワーカーPCを指定して、複数のマシンで同時に大量アクセスを生成することができます。
Locustの分散モードの特徴は以下の通りです。
1つのマスターと複数のワーカーを設定して、マスターが自動的にワーカーの負荷を調整する
各PCの実行結果をマスターに集計されて、自動的にデータをまとめる
Dockerの中でも分散モードが使える。
ワーカー間にフック(Hook)の設定ができるので、依存関係があるテストでも分散できる。
実行パラメータでマスターとワーカーを指定できる、事前にコンフィグファイルの設定は不要
分散モードの設定方法
マスターの設定
Visual Studio Codeのターミナルで「locust -f locust_test.py --master -H https://api.open-meteo.com/v1 -u 10 -r 5」を入力して、マスターを指定して、ワーカーの接続を待ちます。
ワーカーの設定
コマンドプロンプトを起動して、プロンプトフォルダの「locust_practice」フォルダへ移動します。
そして「locust -f locust_test.py --worker」を入力して、ワーカーとしてマスターに接続します。
※この記事はマスターとワーカーが同じPCで実行していたので、ホストの指定を省略してデフォルトのlocalhostを使用しましたが、複数のPCで実行する場合は必ず「--master-host」を指定してください。
続けて別の2つコマンドプロンプトを起動して、上記と同じ操作でマスターに接続します。
全部接続しましたら、Visual Studio Codeのターミナルで3つのワーカーが接続されたメッセージが表示されます。
分散モード
ブラウザのURL欄で「http://localhost:8089/ 」を入力して、LocustのGUIを開いて「Start swarming」をクリックします。
画面の上部に3つのワーカーが実行されていることが確認でき、「Statistics」タブの内容で3ワーカーが実行した負荷テストが自動的にまとめられ、テスト実施結果を簡単に確認できます。
続けて、「Workers」タブで3つのワーカーが実行しているユーザ数が自動的に振り分けられて、CPUとメモリ消費量も確認できます。
本記事は同じPCで、3ワーカーで負荷テストを実行しましたが、マスターとワーカーのホストを指定すると異なるPCでも分散モードを実行することができます。
最後に
ここまで負荷テストツールLocust学習シリーズを紹介して参りました。 Locustにはまだまだ紹介しきれていない機能がありますので、このシリーズを通してLocustの書き方を理解していただければと思います。
そして興味があればぜひ試してみてください。
最後までお読みいただき、ありがとうございました!
参考資料
《シリーズをまとめて読む》
お問合せはお気軽に
https://service.shiftinc.jp/contact/
SHIFTについて(コーポレートサイト)
https://www.shiftinc.jp/
SHIFTのサービスについて(サービスサイト)
https://service.shiftinc.jp/
SHIFTの導入事例
https://service.shiftinc.jp/case/
お役立ち資料はこちら
https://service.shiftinc.jp/resources/
SHIFTの採用情報はこちら
https://recruit.shiftinc.jp/career/