locust基础使用

2023-10-27

**

locust基础使用

**
前言:

最近接到一个需求,压测一个接口稳定性,瞬间脑海浮现了jmeter,然后接着看了是那个接口,瞬间分析了下接口里身份验证的加密算法,加上由于时间有限加上jmeter的BeanShell PreProcessor不是很熟悉,就想python貌似也有locust可以满足基本的性能测试,于是改写之前自动化代码调整使用locust,顺便记录下locust相关基础使用;

正文:

使用locust做压力测试,首先我们还是先谈环境,办公环境ubuntu16,系统上python环境有python2.7、python3.5、python3.6,(看其他博客有博主称locust只支持python2,事实上并不是如此,我先后在python3.6&python3.7运行过)

1、环境准备:

locust有六个依赖的python模块:gevent、flask、requests、msgpack、six、pyzmq

本地安装有python环境的,可以配置对应环境变量,使用pip在线安装是不错的方法;(我记得也可以使用whl包安装,自行选择即可)

# gevent
pip3 install gevent

#在Python中实现协程的第三方库。协程又叫微线程Corouine。使用gevent可以获取极高的并发能力;

#flask
pip3 install -U Flask

#Python的一个web开发框架

#requests
pip3 install requests

#大家很熟悉的requests库,发送http&https请求

#msgpack
pip3 install msgpack

#一种快速、紧凑的二进制序列化格式,使用与类似json的数据;
#msgpack-python已经废弃。参考官网。https://pypi.org/project/msgpack/


#six
pip3 install six

#提供了一些简单的工具封装Python2和Python3 之间的差异;
#https://pypi.org/project/six/

#pyzmq
pip3 install pyzmq

#安装这个第三方库,可以把Locust运行在多个进程或多个机器(分布式)
#安装结束了之后我们就开启Locust之旅了。

2、具体安装:

官网提示,locustio替代locust

pip3 install locustio

大部分人到这里一般都不会看了,非常nice,我也是这样做的,然后进行了环境检查;(声明下:我是直接在物理机环境安装的,我觉得这是一个失误的开始,反正我记得在虚拟环境pip 安装后没有任何幺蛾子)

环境检查:

pip3 show locustio
#检查locustio是否安装

locust --help
#检查locust是否可用

#物理机安装这里除了幺蛾子
提示locust 不是内部命令,简单判断下要不是没有环境变量,要不就是没装,
二话不说加了环境变量
(我加的包安装目录哈,再次检查提示一样的错误,难道没装locust,想起之前是locustio有区别?)
然后再次安装pip3 install locust,再次看没有啥用;
其实locust命令没活过来是加的环境变量不对,在python安装目录下有一个bin目录,安装locustio后在
bin目录就会有locust可执行文件,去引用site-packages依赖包中对应模块;
正确做法如下(可以先pip3 uninstall locust 和 locustio ):

创建一个python工程。
在该工程的虚环境中加入所有的依赖包(以上的包)
pip3 install gevent
pip3 install -U Flask
pip3 install requests
pip3 install msgpack
pip3 install six
pip3 install pyzmq
pip3 install locustio

#环境检查
pip3 show locustio

Name: locustio
Version: 0.13.5
Summary: Website load testing framework
Home-page: https://locust.io/
Author: Jonatan Heyman, Carl Bystrom, Joakim Hamrén, Hugo Heyman
Author-email: UNKNOWN
License: MIT
Location: /usr/local/lib/python3.6/site-packages
Requires: six, msgpack-python, pyzmq, flask, gevent, geventhttpclient-wheels, ConfigArgParse, requests
Required-by: locust


#拎出来:Requires: six, msgpack-python, pyzmq, flask, gevent, 
geventhttpclient-wheels, ConfigArgParse, requests
是不是感觉不对了;上边说的依赖6个,现在有8个,
所以再安装下依赖环境吧,虽然msgpack-python貌似被弃用,但是你安装的包依赖它顺手吧;
所以继续:
pip3 install msgpack-python            #提示已经安装,看来在安装msgpack的时候就安装这个了?
pip3 install geventhttpclient-wheels   #也已经安装,所以在安装gevent的时候就把这个也安装了。
pip3 install ConfigArgParse            #这个也已经安装过。

3、编写代码:

不方便贴公司代码,江湖规矩贴通用代码吧;

# coding=utf-8
import requests
from locust import HttpLocust,TaskSet,task
import urllib3
from urllib3.exceptions import InsecureRequestWarning
# # 禁用安全请求警告
urllib3.disable_warnings(InsecureRequestWarning)

class MyBlogs(TaskSet):
    # 访问我的博客首页
    @task(1)
    def get_blog(self):
        # 定义请求头
        header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"}

        req = self.client.get("/dong-c",  headers=header, verify=False)
        if req.status_code == 200:
            print("success")
        else:
            print("fails")

class websitUser(HttpLocust):
    task_set = MyBlogs
    wait_time = between(3, 6)

if __name__ == "__main__":
    import os
    os.system("locust -f PerformTools.py --host=https://www.cnblogs.com")

可以看到 locust已经启动成功,且开启的端口为8089.

[2020-05-10 15:57:54,008] dongcxxxxxxxxxxxx-xxx.local/INFO/locust.main: Starting web monitor at *:8089
[2020-05-10 15:57:54,008] dongcxxxxxxxxxxxx-xxx.local/INFO/locust.main: Starting Locust 0.13.5

运行停止后有结果:

Name                                                          # reqs      # fails     Avg     Min     Max  |  Median   req/s failures/s
--------------------------------------------------------------------------------------------------------------------------------------------
 GET /dong-c                                                      522     0(0.00%)    4281     273   15399  |    4100    6.42    0.00
--------------------------------------------------------------------------------------------------------------------------------------------
 Aggregated                                                       522     0(0.00%)    4281     273   15399  |    4100    6.42    0.00

Percentage of the requests completed within given times
 Name                                                           # reqs    50%    66%    75%    80%    90%    95%    98%    99%  99.9% 99.99%   100%
------------------------------------------------------------------------------------------------------------------------------------------------------
 GET /dong-c                                                       522   4100   5000   5700   6100   7300   8500  10000  11000  15000  15000  15000
------------------------------------------------------------------------------------------------------------------------------------------------------
 Aggregated                                                        522   4100   5000   5700   6100   7300   8500  10000  11000  15000  15000  15000

填入信息:

Number of users to simulate:设置模拟的用户总数
Hatch rate (users spawned/second):每秒启动的虚拟用户数
Start swarming:执行locust脚本

顺便贴一下安全警告的错误解决:

import urllib3
from urllib3.exceptions import InsecureRequestWarning
# 禁用安全请求警告
urllib3.disable_warnings(InsecureRequestWarning)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

locust基础使用 的相关文章

随机推荐

  • Java中的类、对象以及方法简单定义与参数传递

    目录 一 类和对象的概念 二 方法 一 类和对象的概念 对象 现实世界中客观存在的物体都是对象 具有属性和方法 其中属性描述对象的特征 方法描述对象的行为 类 具有相同属性和方法的多个对象的集合 类是对对象的抽象 对象是类的具体 类是创建对
  • 关于安装pytorch、cuda对应GPU显卡算力问题(记录贴)

    贴几个链接 ngc pytorch容器版本对应关系 CUDA Toolkit版本及可用PyTorch对应关系 NVIDIA英伟达GPU显卡算力表 总结 安装torch时会安装对应的cuda版本 目前来看cuda10对应的是7 5的算力 适用
  • LLVM基本概念入门

    入职新公司以后 开始着手基于LLVM开发编译器 之前在前东家那里主要做gcc的开发 所以也算是有点基础 但拿到LLVM后 除了知道clang a c o a之外 好像其他的都有点差异 现在经过了小一个月的学习 也算有点收获 因为网上关于LL
  • 抖音矩阵系统-60+自媒体平台一键发布-短视频获客系统

    当老板做企业的 想在抖音上做生意的 一定一定要开通蓝V企业号线索版来做矩阵 看看我每天的线索都是999 客服都接待不过来 现在还有300个客资未分配 抖音都在推了企业员工号的玩法 你还在质疑什么 在抖音上做矩阵 真的能将你的生意放大100倍
  • rabbitmq使用mqtt协议

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 rabbitmq是什么 二 mqtt协议是什么 三 配置步骤 1 启用 rabbitmq的mqtt协议 2 mqtt 客户端依赖包 总结 前言 在网上学习
  • JavaScript undefined 属性

    定义和用法 undefined 属性用于存放 JavaScript 的 undefined 值 语法 undefined 说明 无法使用 for in 循环来枚举 undefined 属性 也不能用 delete 运算符来删除它 undef
  • linux各文件夹的作用是什么,linux各目录的作用

    关键字 linux 目录 linux各目录的作用 linux下的文件结构 看看每个目录都是干吗用的 bin 二进制可执行命令 dev 设备特别文件 etc 系统管理和设置文件 etc rc d 启动的设置文件和脚本 home 用户主目录的基
  • 剑指Offer第八和第九题:跳台阶和变态跳台阶以及拓展

    由于题目类似 这里总和一下 并进行拓展 目录 1 跳台阶 2 变态跳台阶 3 拓展篇 疯魔版跳台阶 题目一 题目二 1 跳台阶 题目描述 一只青蛙一次可以跳上1级台阶 也可以跳上2级 求该青蛙跳上一个n级的台阶总共有多少种跳法 先后次序不同
  • 苹果手机锁屏后无线重新连接服务器,iphone11锁屏自动断开wifi怎么办 苹果11手机热点自动断开解决方法...

    目前有着很多用户都在使用最新的iphone11这款手机 但是对于手机上的wifi热点网络却出现了不少的问题 比如iphone11锁屏自动断开wifi wifi热点自动断开 当遇到这些问题应该怎么办 如何才能解决呢 下面就和小编一起来看看吧
  • 基于SpringBoot 的报销系统

    视频展示 基于springboot的报销系统 项目定制 报销系统 哔哩哔哩 bilibili 技术 SpringBoot Html css 个人制作模块介绍 权限模块 前端权限模块 后端权限模块 登录监听 监听器 拦截器 业务流程 接口设计
  • nnU-Net团队新作MedNeXt:新一代医学图像分割之王,刷新多项榜单记录!

    点击下方卡片 关注 CVer 公众号 AI CV重磅干货 第一时间送达 点击进入 gt 医疗影像和Transformer 微信技术交流群 转载自 CVHub Title MedNeXt Transformer driven Scaling
  • clamav的病毒库文件的文件头的信息说明(clamav版本号等)

    Author Samson Date 01 04 2022 在开源病毒检测工具clamav中 是通过对病毒库中的病毒特征值来进行对比的 病毒库文件存放于 var lib clamav目录下 主要是三个cvd文件 如下 bytecode cv
  • httpservletrequest_HttpServletRequest详解 外加请求转发和重定向口述讲解(五)

    点击上方 IT咸鱼 星标公众号 每天分享技术栈 开发工具等 续前篇 咳 今天家里停电电继续更新 每天坚持 前面我们说到response对象的用法和案列 接下来再说说Servlet Request对象用法和案例 1 ServletReques
  • Some Laws in IT

    Moore s Law 摩尔定律是由英特尔 Intel 创始人之一戈登 摩尔 Gordon Moore 提出来的 其内容为 当价格不变时 集成电路上可容纳的元器件的数目 约每隔18 24个月便会增加一倍 性能也将提升一倍 换言之 每一美元所
  • JUC-7. 线程池

    想了解更多JUC的知识 JUC并发编程合集 1 概述 线程池做的工作主要是 控制运行的线程数量 处理过程中将任务放入队列 然后在线程创建后启动这些任务 如果线程数量超过了最大数量 超出数量的线程排队等候 等其他线程执行完毕 再从队列中取出任
  • 全套增删改查(链接数据据库)

    使用Drud连接池连接数据库 完成对数据的增删改查 了解所需要实现的功能 1 综合练习 1 简单功能 1 列表查询 2 登录 3 添加 4 删除 5 修改 2 复杂功能 1 删除选中 2 分页查询
  • ajax怎么给日历日期上做标记,可以做标记的日历?

    原标题 可以做标记的日历 我们很多人一天要做的事情是比较多的 除了工作中的一些任务外 还要照顾好整个家庭 事情多了就难免会有疏忽 所以有不少网友都想要使用一款直观的添加日程的软件 如果可以直接在日历软件中添加日程做标记就更好了 那么有可以做
  • 剑指offer——对称的二叉树

    题目描述 请实现一个函数 用来判断一颗二叉树是不是对称的 注意 如果一个二叉树同此二叉树的镜像是同样的 定义其为对称的 本题知识点 树 解题思路 采用递归的方式 先判断左子树和右子树是否相等 再递归判断左子树的右子树和右子树的左子树以及左子
  • 【101】NLP 自然语言处理14种分类算法】

    内容目录 一 数据集介绍二 解压文件明确需求三 批量读取和合并文本数据集四 中文文本分词五 停止词使用六 编码器处理文本标签七 常规算法模型1 k近邻算法2 决策树3 多层感知器4 伯努力贝叶斯5 高斯贝叶斯6 多项式贝叶斯7 逻辑回归8
  • locust基础使用

    locust基础使用 前言 最近接到一个需求 压测一个接口稳定性 瞬间脑海浮现了jmeter 然后接着看了是那个接口 瞬间分析了下接口里身份验证的加密算法 加上由于时间有限加上jmeter的BeanShell PreProcessor不是很