压测:Locust 测试环境容器化
一、需求:统一版本
虽然 Locust 压测环境安装简单,但是项目中常常出现版本问题导致异常。
二、容器化
- docker-compose.yml
version: '3'
services:
master:
build: .
container_name: locust-master
restart: always
ports:
- "8089:8089"
volumes:
- ${PWD}:/usr/src/app
command: [
"locust",
"--master",
"-f",
"run.py"
]
slave:
build: .
depends_on:
- master
- redis
volumes:
- ${PWD}:/usr/src/app
command: [
"locust",
"-f",
"run.py",
"--slave",
"--master-host",
"master"
]
redis:
image: redis
container_name: locust-redis
command: redis-server
restart: always
networks:
locust_net:
ipam:
driver: default
config:
- subnet: "172.10.10.0/24"
- dockerfile
FROM python:3.7.2-slim
MAINTAINER allan
ENV PYTHONPATH=/usr/src/app \
PYTHONDONTWRITEBYTECODE=1 \
REDIS_IP='redis'
WORKDIR ${PYTHONPATH}
ADD requirements.txt ${PYTHONPATH}
RUN sed -i "s@http://deb.debian.org@http://mirrors.aliyun.com@g" /etc/apt/sources.list \
&& rm -rf /var/lib/apt/lists/* /tmp/*
RUN pip install --upgrade pip \
&& pip install --default-timeout=1000 \
--no-cache-dir -r requirements.txt \
-i https://pypi.doubanio.com/simple/
- requirements.txt
gevent==1.4.0
greenlet==0.4.15
locustio==0.11.0
numpy==1.21.4
python_redis_lock==3.7.0
redis==4.0.2
redis_lock==0.2.0
requests==2.25.1
six==1.16.0
websocket_client==1.2.3
三、运行
1.在容器环境中运行主程序(根目录下)
docker-compose up -d
2.运行主程序时指定slave数量以获得多核支持
docker-compose up --scale slave=64 -d
3.访问Locust Web界面
http://${IP}:8089