【locust】locust安装与启动

locust安装

通过pip 安装locust

pip install locustio

需要预先安装python3和pip,这次在安装环境时遇到一些坑,环境中原本使用的python2.6,需要重新安装python3环境,这时候可以安装一个虚拟环境

注:支持的python版本:2.7、3.4、3.5、3.6及以上

虚拟环境安装

  1. 命令安装了python的虚拟环境
pip3 install virtualenv
  1. 创建虚拟机环境
virtualenv /venv
  1. 激活虚拟环境
source /venv/bin/activate

进入了一个全新的python3的环境,你可以安装独立的python依赖了,安装完成之后可以启动程序运行

  1. 退出虚拟环境
deactivate

脚本示例

locust的脚本里,模拟负载的请求和python的requests库使用方法基本一样,示例如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author: lluozh
# @Date  : 2020/4/16
# @Desc  :
from locust import HttpLocust,TaskSet,task,between

class MyBlogs(TaskSet):
    @task(1)
    def get_blog(self):
        header = {
        }
        body = {
            "roomId": "158589982254376"
        }

        req = self.client.get("/api/v1/model", headers=header, params=body, verify=False)
        # print(req.text)
        # if req.status_code == 200:
        #     print("success")
        # else:
        #     print("fails")

class websitUser(HttpLocust):
    task_set = MyBlogs
    # 设置用户执行任务之间等待的上下限,单位秒
    wait_time = between(3, 6)
    # # 等同于上面wait_time,单位毫秒
    # min_wait = 3000
    # max_wait = 6000
    host = "http://benchmark-server.lluozh.com"

if __name__ == "__main__":
    import os
    # os.system("locust -f locusttest.py --master")
    os.system("locust -f locusttest.py --slave --master-host=10.200.0.219")

脚本说明:

  • 新建一个类MyBlogs(TaskSet),继承TaskSet,该类下面写需要请求的接口以及相关信息
  • self.client调用get和post方法,和requests一样
  • @task装饰该方法表示为用户行为,括号里面参数表示该行为的执行权重:数值越大,执行频率越高,不设置默认是1

WebsiteUser()类用于设置生成负载的基本属性:

  • task_set:指向一个TaskSet类,TaskSet类定义了用户的任务信息,该属性为必填
  • min_wait:模拟负载的任务之间执行时的最小等待时间,单位为毫秒
  • max_wait:模拟负载的任务之间执行时的最大等待时间,单位为毫秒
  • host:被测系统的host,当在终端中启动locust时没有指定–host参数时才会用到
  • weight:同时运行多个Locust类时会用到,用于控制不同类型任务的执行权重。、

默认情况下,时间是在min_wait和max_wait之间随机选择,但是可以通过将wait_function设置为任意函数来使用任何用户定义的时间分布

启动Locust

1. 单机启动

locust -f testscript/locusttest.py --host=http://benchmark-server.lluozh.com

2. 分布式启动
master:

locust -f testscript/locusttest.py --master --host=http://benchmark-server.lluozh.com

slave:

locust -f testscript/locusttest.py --slave --master-host=10.200.0.2190 --host=http://benchmark-server.lluozh.com

注:若在阿里云环境时,需要使用内部ip

成功启动提示

[2020-04-18 20:01:22,727] IMYalost/INFO/locust.main: Starting web monitor at *:8089
[2020-04-18 20:01:22,729] IMYalost/INFO/locust.main: Starting Locust 0.8 

8089是该服务启动的端口号,如果是本地启动,可以直接在浏览器输入http://localhost:8089打开UI界面,如果是其他机器搭建locust服务,则输入该机器的IP+端口即可

运行逻辑

测试开始后,每个虚拟用户(Locust实例)的运行逻辑都会遵循如下规律:

  1. 先执行WebsiteTasks中的on_start(只执行一次),作为初始化
  2. 从WebsiteTasks中随机挑选(如果定义了任务间的权重关系,那么就是按照权重关系随机挑选)一个任务执行
  3. 根据Locust类中min_wait和max_wait定义的间隔时间范围(如果TaskSet类中也定义了min_wait或者max_wait,以TaskSet中的优先),在时间范围中随机取一个值,休眠等待
    重复2~3步骤,直至测试任务终止。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章