Posted at

Docker ComposeでLocustの負荷試験環境を作成する

More than 3 years have passed since last update.

負荷試験の環境を手軽に作りたいという思い、Dockerで使って作ってみた。

基本的には下記のものとほとんど下記を参照しています。+αとしてDocker Compose使うとよりいいかんじにmaster slave構成ができるというもの。

Docker + Locustのことは上記に詳しく書いているので省略します。

source

Docker ComposeのConfigは下記のようになっていて、テスト用にnginxを立てていて、nginxに対して負荷をかけていく構成にしています。


docker-compose.yaml

web:

image: nginx
ports:
- "80:80"
master:
build: .
command: locust -f /locust/scenarios.py -H http://web --master
ports:
- "8089:8089"
- 5557
- 5558
links:
- web
slave:
build: .
command: locust -f /locust/scenarios.py -H http://web --slave --master-host=master
links:
- web
- master
ports:
- 5557
- 5558

シナリオはただ単にGETするだけのもの


/locust/scenarios.py

from locust import HttpLocust, TaskSet, task

class MyTaskSet(TaskSet):

@task(1)
def index(self):
self.client.get("/")

class MyLocust(HttpLocust):
task_set = MyTaskSet


これで

$ docker-compose up

すればnginxとLocustのmaster + slave * 1が立ち上がります。

LocustのWeb UIで見ればSalveが1になっていると思います。

Slave増やしたいなって思った時は下記のコマンド一発で増やせます。

$ docker-compose scale slave=2

これだけで台数増やせて負荷をかけられるのはいいと思うので負荷試験のときは使ってもいいと思います。これだとSalveを増やしてもシングルホスト上で増えるだけなのでいずれはクライアント側は限界くると思います。

なので下記の記事を参考にすればシングルホストの限界は超えられるかなと思ったりしています。