性能测试工具 locust 压力测试基础使用

shan · 2018年03月01日 · 最后由 shan 回复于 2018年06月22日 · 3209 次阅读

locsut

负载测试工具,用 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 执行,直到测试结束

脚本执行

  • no-web 模式

执行命令: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 脚本文件;

  • web 模式

执行命令:locust -f locsutfile.py

-P, --port:指定 web 端口,默认为 8089

浏览器进入http://localhost:8089即可进入 Locust 的 Web 管理页面,输入参数,开启测试
输入框 1 表示并发数,输入框 2 表示每秒新增用户进行开启。

分布式运行

  • 单机多进程—一台机器上开启多个 slave
  • 多机负载—在多个机器上开启多个 slave 先启动一个 master,再启动多个 slave

启动 master:
locust -f locustfile.py --master

单机开机 slave,无需指定 master 机器,默认为本机:
locust -f locustfile.py --slave

多机开启 slave,需要指定 master 机器的 host:
locust -f locustfile.py --slave --master-host=**

共收到 2 条回复 时间 点赞

招收应届毕业生吗 有半年实习经验

shan #2 · 2018年06月22日 Author

欢迎投递~

shan 关闭了讨论 09月15日 20:41
shan 重新开启了讨论 09月15日 20:53
shan 关闭了讨论 09月15日 20:53
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册