Locust压力测试方法
-
通过docker执行locust
docker run -p 8089:8089 -v $PWD:/mnt/locust locustio/locust -f /mnt/locust/locustfile.py
-
/mnt/locust
本地locust脚本目录 -
/mnt/locust/locustfile.py
即将执行的脚本
-
-
Use docker image as a base image
FROM locustio/locust RUN pip3 install some-python-package
-
CI执行locust,不启用WEBUI的执行方式
locust -f locust_files/my_locust_file.py --headless -u 1000 -r 100 --run-time 1h30m --stop-timeout 99
-
--headless
without the web UI -
-u
并发用户数 -
-r
每秒发出100用户 -
--run-time
脚本执行时间,到时间会立刻结束 -
--stop-timeout
脚本执行停止的时间
-
-
分布式执行locust
- 参考:https://docs.locust.io/en/stable/running-locust-distributed.html#running-locust-distributed
locust -f my_locustfile.py --worker --master-host=192.168.0.14 --master-port=5557 locust -f locust_files/my_locust_file.py --headless -u 1000 -r 100 --run-time 1h30m --stop-timeout 99 --expect-workers X
-
监听locust执行,设置执行进程返回的状态码
import logging from locust import events @events.quitting.add_listener def _(environment, **kw): if environment.stats.total.fail_ratio > 0.01: logging.error("Test failed due to failure ratio > 1%") environment.process_exit_code = 1 elif environment.stats.total.avg_response_time > 200: logging.error("Test failed due to average response time ratio > 200 ms") environment.process_exit_code = 1 elif environment.stats.total.get_response_time_percentile(0.95) > 800: logging.error("Test failed due to 95th percentile response time > 800 ms") environment.process_exit_code = 1 else: environment.process_exit_code = 0
-
使用配置文件
locust -f example.py --config ./locust.conf