博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【locust】locust安装与启动
阅读量:1989 次
发布时间:2019-04-27

本文共 2608 字,大约阅读时间需要 8 分钟。

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,betweenclass 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步骤,直至测试任务终止。

转载地址:http://iptvf.baihongyu.com/

你可能感兴趣的文章
行阶梯型矩阵
查看>>
图像处理学习笔记
查看>>
MATLAB函数备忘(定期更新)
查看>>
13行MATLAB代码实现网络爬虫 爬取NASA画廊星图
查看>>
MATLAB指定路径保存图片方法
查看>>
Python一键获取微信推送封面图
查看>>
油猴脚本:微信推送浏览功能拓展
查看>>
JavaScript 表单操作与MD5加密
查看>>
JAVA学习笔记4 - 循环与分支结构
查看>>
JAVA学习笔记5 - Number类,Math类,Character类,String类,StringBuffer类
查看>>
JAVA学习笔记6 - 数组
查看>>
JAVA学习笔记8 - Stream 和 File I/O
查看>>
JAVA学习笔记9 - 异常
查看>>
JAVA学习笔记10 - 继承
查看>>
JAVA学习笔记11 - 接口interface
查看>>
Android 开发学习笔记 00 - Getting Started
查看>>
【学习笔记】Android Activity
查看>>
Android使用Retrofit_00_Getting Started
查看>>
Android使用Retrofit_01_OAuth2 + GitHub
查看>>
Android + Django + OAuth2 + Stub Authenticator
查看>>