首页 > 其他分享 >Locust 介绍与特性

Locust 介绍与特性

时间:2024-03-12 21:46:13浏览次数:30  
标签:https python Locust locust 介绍 特性 测试 jmeter

一 Locust的介绍


现在不管是互联网行业还是传统行业,对性能的要求,都日渐增多,为了能更快更准确的定位问题,发现问题,以及解决问题,市面上出现了越来越多的性能测试工具,例如Jmeter,LoadRunner,Locus,而今天,我们主要介绍就是Locust,locust官网如下:https://www.locust.io
简介:
先从 `Locust`的名字说起。`Locust`的原意是蝗虫,原作者之所以选择这个名字,估计也是听过这么一句俗语,“蝗虫过境,寸草不生”。我在网上找了张图片,大家可以感受下
![image.png](https://fynotefile.oss-cn-zhangjiakou.aliyuncs.com/fynote/fyfile/15480/1679988457057/c3cf320cd1c94b2289d18c02f1c973c2.png)
而 `Locust`工具生成的并发请求就跟一大群蝗虫一般,对我们的被测系统发起攻击,以此检测系统在高并发压力下是否能正常运转。
服务端性能测试工具最核心的部分是压力发生器,而压力发生器的核心要点有两个,**一是真实模拟用户操作**,**二是模拟有效并发**。

二 Locust是什么?

Locust是一个易于使用、可编写脚本且可扩展的性能测试工具。
您可以使用常规Python代码定义用户的行为,而不是使用笨拙的UI或DSL。
这使Locust可以无限扩展,并且对开发人员非常友好。
要开始使用 Locust,请转到[安装](# 安装)。
https://docs.locust.io/en/stable/index.html

三**Locust 特性**


* 使用纯Python代码编写用户测试场景 * 分布式&可伸缩——支持数十万用户
Locust使得运行分布在多台计算机上的负载测试变得容易。它是基于事件的(使用gevent),这使得单个进程可以处理数千并发用户。尽管可能还有其他工具可以在给定的硬件上每秒执行更多请求,但是每个Locust用户的低开销使其非常适合测试高并发工作负载。
* 基于Web的UI
Locust具有用户友好的Web界面,可实时显示测试进度。 您甚至可以在测试运行时更改负载。 Locust也可以在没有UI的情况下运行,从而使其易于用于CI / CD测试。
* 可以测试任何系统
尽管Locust是面向 站点/服务 的,但也可以用于测试几乎所有系统或协议。只需为您要测试的系统编写一个客户端,或者浏览社区创建的针对特定需求的客户端即可。
* 可拓展
Locust 非常小,非常灵活,我们打算使其一直保持这种特点。如果你想将报告数据发送到你喜欢的数据库&图形系统,请包装对REST API的调用以便处理系统的细节,或运行一个完全自定义的加载模式,那么你就可以无往不利。
## 1.2 Locust的主要核心库
1)gevent gevent是一种基于协程的python网络库,它用到了Greenlet提供的封装了libevent事件循环的高层同步api
2)flask python编写的轻量级Web应用框架
3)requests python http库
4)msgpack-python MessagePack是一种快速、紧凑的二进制序列化格式,适用于类似JSON的数据格式。msgpack-python主要提供MessagePack数据序列化及反序列化的方法。
5)pyzmq pyzmq是zeromq(一种通信队列)的Python实现,主要用来实现Locust的分布式模式运行  

四  Loust的运行原理

* 第一步首先,执行WebsiteTasks中的on_start()方法(只执行一次),进行初始化的操作 * 第二步从WebsiteTasks中随机挑选一个任务进行执行,如果是定义了任务的权重,那么会按照定义的权重进行执行 * 第三,根据losust类中的 min_wait和max_wait定义的间隔,如果TaskSet类中也定义了min_wait或者max_wait,\以TaskSet中的优先,在时间范围中随机取下一个值进行休眼等待 * 最后的话是重复第二步和第三步直到我们的测试任务结束

五  Locust和与其它常见的性能测试工具的区别

![image.png](https://fynotefile.oss-cn-zhangjiakou.aliyuncs.com/fynote/fyfile/15480/1679988457057/650b4522ef5c4bc1b5a54a5313276c5f.png)
不同细节表现如下:
* 脚本
  locust使用写脚本的方式,方便对于python有一定基础的人,可以随着自己的想法进行脚本的编写
  jmeter通过可视化工具,填写后保存。上手难度低,适合所有人员。 * 运行
  locust有两种启动,一种通过web模式控制,还有一种通过命令行控制
  jmeter有两种启动,一种通过可视化工具控制,还有一种也是通过命令行控制 * 调试
  locust脚本编写时,几乎无调试方式,只能靠运行查看,不方便
  jmeter脚本编写时,使用查看结果树就能查看到具体的结果 * 分布式
  locust无论是否使用web,分布式执行指令即可,可以按照分布机的情况,控制分布worker的数量。
  jmeter分布式命令行模式控制稍繁琐,可视化界面需要配置文件中指定机器,而且https互通时,还需要互相传递秘钥。
  综上,jmeter可以指定运行的机器,但是需要配置。locust被动接受运行机器,但是当一个机器断开后,不会重新分配。分布方法都还可以,挺简单。 * 报告
  locust真的是简陋,只有tps、响应时间、并发数的图,还有错误信息,但是80%的信息都包含了,只能满足可用。
  jmeter可以生产html的报告,乍一看很强大,很详细,但是可用的数据不多,io使用情况以及少量图表可以借鉴。
  综上,报告都一般,主要的信息都提供了,其余的需要自己汇总和参考。 * 运行时
  如果 想监控我们的服务器资源 ,Locust和我们的jmeter都需要进行第三方软件的支持。

标签:https,python,Locust,locust,介绍,特性,测试,jmeter
From: https://www.cnblogs.com/yongheng999/p/18069373

相关文章

  • 【C++】string类(介绍、常用接口)
    ......
  • 揭秘Docker镜像:概念、原理、特性的全方位解读与实战常用命令解析
    在当今的云原生时代,Docker凭借其轻量级容器技术彻底改变了软件交付和部署的方式。而Docker镜像作为容器的基石,其背后的奥秘和实际应用更是值得我们深入探讨。本文将全面解析Docker镜像的概念、底层原理、独特特性以及日常运维中常用的命令,让您对Docker镜像有更深层次的理解与掌......
  • 12VMWare虚拟机设置页介绍
    VMWare虚拟机设置页介绍我们可以对VM里安装的虚拟机进行个性化设置,向其中添加,修改,删除硬件.点击菜单栏上的虚拟机(M),点击设置(S).内存内存越大,虚拟机运行速度越快.但是需要量力而行,相应的,虚拟机获得的内存越大,你的物理机所剩内存越小.处理器不用进行设置.硬盘......
  • Python的特性——跟老吕学Python编程
    Python的特性——跟老吕学Python编程Python的特性1.Python易学易用2.Python是解释型语言3.Python是交互式的4.Python是一种多范式语言5.Python的标准库6.Python是开源的7.Python是跨平台的8.用于GUI应用程序的Python9.Python的数据库连接10.Python是可扩展的11.Python拥......
  • UI自动化测试介绍及入门
    为了让对自动化技术感兴趣的朋友们有真实案例的支持,今天我们给大家带来一期适合新手的UI自动化测试介绍。我们的目标是让大家能够轻松理解UI自动化测试的概念,并且能够亲自动手去实践。通过这个介绍,大家能够对UI自动化测试有一个整体的理解,并且能够自己动手去做。项目的选取:虽然U......
  • 探索Flutter中的模糊毛玻璃滤镜效果:ImageFilter介绍使用和深入解析
    在Flutter中,模糊效果不仅可以增加应用的视觉吸引力,还可以用于多种场景,如背景模糊、图像处理等。通过BackdropFilter和ImageFilter.blur,Flutter使得添加和调整模糊效果变得异常简单。本文将深入探讨如何在Flutter中实现动态模糊效果,并通过TileMode参数调整模糊效果的边缘行为......
  • 深入理解 Nginx:原理和基础介绍
    简介Nginx(发音为"engine-x")是一个高性能的开源Web服务器,它也可以用作反向代理服务器、负载均衡器、HTTP缓存以及作为邮件代理服务器。它的灵活性、高性能和可扩展性使其成为许多互联网公司和网站的首选服务器软件。本文将介绍Nginx的原理、基础知识以及其在互联网架构中的......
  • 探索PyTorch:介绍及常用工具包展示
    前言PyTorch作为一个强大的开源深度学习框架,近年来在科学计算和人工智能领域备受欢迎。它提供了灵活的张量计算和动态计算图的功能,使得构建和训练深度神经网络变得更加简单和高效。本文将介绍PyTorch的基本概念,并展示一些常用的PyTorch工具包,帮助读者更好地了解和利用PyTorch进......
  • 多线程系列(十七) -线程组介绍
    一、简介在之前的多线程系列文章中,我们陆陆续续的介绍了Thread线程类相关的知识和用法,其实在Thread类上还有一层ThreadGroup类,也就是线程组。今天我们就一起来简单的聊聊线程组相关的知识和用法。二、什么是线程组线程组,简单来说就是多个线程的集合,它的出现主要是为了更方便的......
  • Prometheus组件构成及介绍
    Prometheus是一个开源的监控和告警工具包,其常用的组件主要包括以下几个部分:PrometheusServer功能:PrometheusServer是Prometheus的核心组件,负责定时从被监控组件(如Kubernetes、Docker、主机等)中拉取(pull)数据,并将其存储在本地的时间序列数据库中。它还提供了灵活的查询语言(Pro......