一、环境配置
python 3.7
Locust 1.1.1
MacOS
二、为什么需要使用locust
公司面对大量用户时,有时候需要对某些单接口/组合接口压测;但是单台机器的性能又无法满足大并发量,怎么办?一开始考虑用非界面版本的jmeter去执行任务,但是macOS对jmeter5.3不兼容(好卡,不知道是不是个人电脑问题),最后决定使用Python的高并发框架Locust。
下面说说当前接口并发工具中,各自的优缺点:
image.png
**图片来自网络
三、基本使用
from locust import HttpUser, task
class Quickstart(HttpUser):
min_wait = 100 # 最小等待时间(ms),模拟用户在执行每个任务之间等待的最小时间
max_wait = 500 # 最大等待时长(ms),模拟用户在执行每个任务之间等待的最大时长
host = 'https://baidu.com' # 访问的域名
def on_start(self):
#开始任务
print("start working")
# 任务target,用@task标记
@task
def mytask(self):
self.client.get('/')
参数解释:
1.使用@task装饰的方法为一个事务,方法的参数@task(2)用于指定该行为的执行权重,参数越大每次被用户执行的概率越高,默认为1(即task(2)是@task(1)执行次数的2倍)
2.on_start():每个用户执行测试事务之前执行一次,用于做初始化的工作
四、启动Locust
命令窗口执行:locust -f 待测脚本
浏览器打开:locust:8089 # 8089是默认端口
- Number of users to simulate :设置模拟用户数
- Hatch rate(users spawned/second) :每秒产生(启动)的虚拟用户数
- Locust是逐渐提高并发数目,来作持续性压测的工具(即图中的每秒增加1个用户,增加9次后达10个用户并发,并以10个用户持续压测);点击Stop来停止运行;点击New test修改并发数
五、分布式压测初尝
执行方法比较简单,但务必注意⚠️Locust的版本主、从机是否一致
- 主机(控制机),执行命令
locust -f 待测脚本 --master
- 从机(负载器),执行命令
locust -f 待测脚本 --worker --master-host=主机IP地址
- 主机打开Locust网站,会发现右上角会多了个worker的字段,点击就可以查看当前从机的信息
网友评论