压测工具之Locust

2023-11-03

前言

  说起压测,我就用过Jmeter,而且仅是简单使用,好用性能强大,最近接触了一个python提供的压测框架Locust,翻译为蝗虫,蝗虫过之,寸草不生,哈哈哈,我感觉很贴切。
首先,我们分析一下市面上几种工具的特性。

\ LoadRunner Jmeter Locust
授权方式 商业收费 开源免费 开源免费
开发语言 C/Java Java Python
测试脚本形式 C/Java GUI Python
并发机制 进程/线程 线程 协程
单机并发能力
分布式压力 支持 支持 支持
资源监控 支持 不支持 不支持
报告与分析 完善 简单图表 简单图表
支持二次开发 不支持 支持 支持
并发方式 线程 线程 协程
  我认为最适合程序员的当然是Locust,脚本语言快速开发,可玩性高,自由发挥,甚至可以用来干坏事,哈哈哈哈,不用记繁琐的页面操作,支持二次开发,最关键的是它使用的协程,这个减少了线程的资源耗费,适合我这种只有低端笔记本的选手。

Locust安装

Locust官网地址,具体安装步骤可以参考。
  我是搭建在一个阿里云服务器上,当然是需要python环境的,如果你的centos需要安装python环境可以参考我的另一篇帖子Centos安装Python3.8详细教程
接下来使用pip或者pip3安装locust

pip3 install locust

我已经装好了,因此显示已经存在如下图。实际安装情况也不慢。除此之外,还还可以直接去git上面下载zip包,那种方式没有尝试过,有兴趣的朋友可以去试试。在这里插入图片描述
使用命令查看安装是否成功,显示下图则表示已经安装成功。

locust -V

显示版本号2.6.0
在这里插入图片描述

测试脚本准备

  本来想自己写个jar包扔上去做测试,一看机器上面没有装jdk,我又懒了。。。。后来从网上找了个demo,访问百度的接口。脚本里面启动命令加了访问地址,这里不做赘述,都是很简单的命令,请求直接使用request类库,帖子能看到这一步的不会没有用过吧!!!

import time
from locust import HttpUser, task, between, events
import urllib3
from locust.contrib.fasthttp import FastHttpLocust
urllib3.disable_warnings()


@events.test_start.add_listener
def on_test_start(**kwargs):
    print('===测试最开始提示===')


@events.test_stop.add_listener
def on_test_stop(**kwargs):
    print('===测试结束了提示===')


class TestTask(HttpUser):
    wait_time = between(1, 5)
    # host = 'https://www.baidu.com'

    def on_start(self):
        print('这是SETUP,每次实例化User前都会执行!')

    @task(1)
    def getBaidu(self):
        self.client.get(url="/", verify=False)

    def on_stop(self):
        print('这是TEARDOWN,每次销毁User实例时都会执行!')

# class MyLocust(FastHttpLocust):
#     task_set = TestTask
#     min_wait = 1000
#     max_wait = 60000
if __name__ == "__main__":
    import os

    os.system("locust -f locustDemo1.py --host=https://www.baidu.com")

将脚本上传至服务器。然后运行。

python3 locustDemo1.py

启动效果如下图,并且已经给出了ui页面的访问方式,机器http://ip:8089/即可。
在这里插入图片描述
在这里插入图片描述

到这里,Locust脚本已经跑了起来。页面也很直观,要求输入并发用户数量,每秒产生用户数量,host(刚才已经指定)。然后点击start就开始了压测。

Locust压测指标简介

  进来默认展示的是压测报告
在这里插入图片描述

字段 解释
Type 请求类型
Name 请求路径
requests 当前请求的数量
fails 当前请求失败的数量
Median 中间值,单位毫秒,一般服务器响应时间低于该值,而另一半高于该值
Average 所有请求的平均响应时间,毫秒
Min 请求的最小的服务器响应时间,毫秒
Max 请求的最大服务器响应时间,毫秒
Content Size 单个请求的大小,单位字节
reqs/sec 每秒钟请求的个数

切换至图表页面还能查看实时的折现图、包含请求趋势、响应时间、并发用户数等。
每秒请求数量

响应时间
并发用户数量

当然,还提供了查看失败请求的页面、下载请求统计数量的页面。这些对于程序员做一写简单的压力测试完全够用。爱了爱了。

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

压测工具之Locust 的相关文章

随机推荐

  • SDIO接口(4)——SDIO通信

    SDIO通信 SD总线上的通信基于命令和数据位流 这些命令和数据位流由起始位启动 并由停止位终止 SDIO总线上的设置和控制都是通过命令来实现 SDIO总线上都是HOST端发起请求 然后DEVICE端回应请求 其中请求和应答中会包含数据信息
  • 香橙派4和树莓派4B构建K8S集群实践之八: TiDB

    目录 1 说明 2 准备工作 3 安装 3 1 参考Tidb官方 v1 5安装说明 3 2 准备存储类 3 3 创建crd 3 4 执行operator 3 5 创建cluster dashboard monitor容器组 3 6 设置访问
  • Android BottomNavigationView的使用

    BottomNavigationView大于3个menu文字和icon都显示 代码中设置 public static void disableShiftMode BottomNavigationView view int count vie
  • 使用Java对轨迹进行抽稀,并生成mvt(Map Vector Tile)瓦片

    Java对轨迹进行抽稀 并生成mvt线瓦片 1 原理 2 pom依赖 3 Java对轨迹道格拉斯普克抽稀源码 4 Java生成线瓦片源码 参考 1 原理 Java对轨迹抽稀 道格拉斯普克算法 生成mvt瓦片 VectorTileEncode
  • mysql tinyint和char(1)性能对比

    在数据库设计的时候会遇到很多只需要0 1 2这种固定几个值的状态字段 基本上都建议设置为只占一字节的tinyint类型 有些觉得char 1 是一样 毕竟char 1 存储数字和字母时一个字符也只是占一个字节 mysql是用c 写的 而在c
  • 蓝桥杯-小数第n位-2017-国赛

    小数第n位 文章目录 小数第n位 分析 代码 参考材料 题目描述 我们知道 整数做除法时 有时得到有限小数 有时得到无限循环小数 如果我们把有限小数的末尾加上无限多个 0 它们就有了统一的形式 本题的任务是 在上面的约定下 求整数除法小数点
  • VSCode配置之Opencv4x终极奥义

    苦于windows下编译opencv的效率和对于大型软件如Visual Studio 2017 Visual Studio S2019等的不习惯 希望VScode也能够快速 高效编译第三方库 如opencv等 花了大概两天的时间 分析了主流
  • 【Where和having的区别】条件语句where和having有什么不同?

    Where 总之 WHERE 关键字的特点是 直接用表的字段对数据集进行筛选 如果需要通过关联查询从其他的表获取需要的信息 那么执行的时候 也是先通过 WHERE 条件进行筛选 用筛选后的比较小的数据集进行连接 这样一来 连接过程中占用的资
  • iostat 命令

    NAME iostat Report Central Processing Unit CPU statistics and input output statistics for devices partitions and network
  • 计算机组成原理与系统结构期末复习题(2)

    计算机组成原理与系统结构 选择题 1 冯 诺依曼机工作的基本方式的特点是 B A 多指令流单数据流 B 按地址访问并顺序执行指令 C 堆栈操作 D 存贮器按内容选择地址 2 完整的计算机应包括 D A 运算器 存储器 控制器 B 外部设备和
  • VS环境下Qt工程.UI文件不生成头文件的问题

    在VS环境下创建的Qt工程会出现 UI文件不生成头文件的问题 可以通过右击 ui文件 点击编译生成头文件 但是 我创建的工程的 ui文件不能编译 右键编译选项是灰的 这种情况下 我想到的办法是 重新添加一个带UI文件的GUI类 与工程同名
  • openmvg2.0编译与使用

    目录 写在前面 获取代码 github 网盘 编译 使用 稠密重建 参考 完 写在前面 1 openmvg是一个用于实现structure from motion的开源库 实现了完整的sfm pipeline 并有说明文档 https op
  • css文本换行加省略号

    overflow hidden text overflow ellipsis white space nowrap 可以显示的行数 超出部分用 表示 webkit box orient vertical 控制显示行数 webkit line
  • 某企业每月给其A、B、C 和D 四个门店一共发送6 个集装箱的某种货物,如果各门店出售该种货物的利润(万元)如下表:

    某企业每月给其A B C 和D 四个门店一共发送6 个集装箱的某种货物 如果各门店出售该种货物的利润 万元 如下表 试求这6 箱货物如何分配给各门店 才能获得最大总利润 解题思路 将问题按卖场分为四个阶段 将A B C D四个卖场分别编号为
  • Angular学习---filter过滤器(管道pipe)

    angular核心概念 过滤器 Filter 应用 如当后台传入数据用1 2 代表性别 可以用过滤器进行更改 如上 练习 创建员工信息列表 中 的员工性别 过滤器在angular2以后改名为 管道 pipe 详见新建的sex pipe ts
  • 【H.264/AVC视频编解码技术详解】二十二、熵编码(7):语法元素的CABAC解析

    H 264 AVC视频编解码技术详解 视频教程已经在 CSDN学院 上线 视频中详述了H 264的背景 标准协议和实现 并通过一个实战工程的形式对H 264的标准进行解析和实现 欢迎观看 纸上得来终觉浅 绝知此事要躬行 只有自己按照标准文档
  • 【Java基础】环境搭建+简介(一)

    JAVA语言背景介绍 Java 语言是美国Sun公司 Stanford University Network 在1995年推出的计算机语言 Java之父 詹姆斯高斯林 James Gosling Java语言的发展史 Sun公司于1995年
  • Qt信号和槽绑定实例,点击pushbutton按钮触发QLabel文本显示和关闭

    功能简介 点击qt界面中的open按钮在界面中显示文本 同时按钮变为close按钮 再点击close按钮可以关闭显示文本 同时按钮变为open按钮 继续点击open按钮 关键内容 关联按钮按事件和信号识别槽 connect this gt
  • 2.1.Perl运行方式

    Perl运行方式 B站视频教程 菜鸟学生信 课程参考书 小骆驼书 第六版 1 运行 Perl Perl 有不同的执行方式 1 1 交互式 perl e
  • 压测工具之Locust

    前言 说起压测 我就用过Jmeter 而且仅是简单使用 好用性能强大 最近接触了一个python提供的压测框架Locust 翻译为蝗虫 蝗虫过之 寸草不生 哈哈哈 我感觉很贴切 首先 我们分析一下市面上几种工具的特性 LoadRunner