负载测试工具,用 python 语言定义用户行为,可以给系统施加百万级的虚拟用户的压力
现在举个例子,代码示例如下:
from locust import HttpLocust, TaskSet, task
class WebsiteTasks(TaskSet):
def on_start(self):
self.client.get("/login")
@task(2)
def about(self):
self.client.get("/self")
@task(1)
def index(self):
self.client.get("/index")
class WebsiteUser(HttpLocust):
task_set = WebsiteTasks
host = "***"
min_wait = 1000
max_wait = 5000
以上代码实现场景:
1.用户先请求登陆接口,执行onstart
一次,作为初始化
2.随机选择 self 接口或 index 接口请求,按照 2:1 的权重进行执行
3.两次请求的等待时间为 1s 到 5s 的随机值
4.重复 2.3 执行,直到测试结束
执行命令:locust -f locustfile.py --no-web -c 1 -n 1
-c, --clients:指定并发用户数;
-n, --num-request:指定总执行测试;
-r, --hatch-rate:指定并发加压速率,默认值位 1;
-H, --host:被测系统的 host,若在终端命令中不进行指定,就需要在 Locust 子类中通过 host 参数进行指定;
-f, --locustfile:指定执行的 Locust 脚本文件;
执行命令:locust -f locsutfile.py
-P, --port:指定 web 端口,默认为 8089
浏览器进入http://localhost:8089
即可进入 Locust 的 Web 管理页面,输入参数,开启测试
输入框 1 表示并发数,输入框 2 表示每秒新增用户进行开启。
启动 master:
locust -f locustfile.py --master
单机开机 slave,无需指定 master 机器,默认为本机:
locust -f locustfile.py --slave
多机开启 slave,需要指定 master 机器的 host:
locust -f locustfile.py --slave --master-host=**