目次
Locustとは何か?
- Jmetarのような負荷試験ツール
- 試験シナリオはPythonで書くことができてJmetarよりもシンプルに準備ができる
- 実行間隔や並列度を簡単に設定して実行することができる
- レポート機能やリアルタイム分析が機能としてある
- Webのグラフィカルインターフェースが付いており直感的な操作が可能
Locastのインストール
Pythonがインストールされている前提です。
Locastは以下のコマンドでインストールできます。
python -m pip install locustio
ただ負荷試験用サーバを用意することは稀だと思います。
なので今回は負荷試験用Dockerコンテナ群を用意したいと思います。
docker-compose.yml
docker-compose.ymlは以下のように記述します。
version: '3'
services:
master:
image: locustio/locust
ports:
- “8089:8089”
volumes:
- ./:/mnt/locust
command: -f /mnt/locust/locustfile.py –master -H http://master:8089
worker:
image: locustio/locust
volumes:
- ./:/mnt/locust
command: -f /mnt/locust/locustfile.py –worker –master-host master
masterとworkerコンテナを作成します。Dockerhubにimageは登録されているのでそのままPullします。
locustfile.pyについては後述します。
locustfile.py(シナリオ記述ファイル)
locustfile.pyにシナリオを記述します。
from locust import HttpUser, task
class HelloWorldUser(HttpUser):
@task
def hello_world(self):
self.client.get("/")
今回はテスト対象URLのルート”/”にGETリクエストをするように書きました。
起動と負荷試験手順
起動コマンド
docker-compose up --scale worker=4
引数のworkerは並列度に応じて増やしてください。最初は4ぐらいでOKです。
試験の実行方法
http://localhost:8089にアクセスすると以下の画面に表示されます。
- number of usersで接続ユーザ数を設定
- Spawn rateで増加するuserの速度を設定
- Hostで接続するためのURLを設定
設定後にStart swarmingで測定を開始できます。
以下の画面ではテストが開始されました。