性能测试工具locust压测介绍

这篇具有很好参考价值的文章主要介绍了性能测试工具locust压测介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

官方文档:https://docs.locust.io/en/stable/index.html

1、初识locust

        Locust 完全基于Python 编程语言,采用python 编写压测脚本,且所有请求完全基于requests库。除了 HTTP/HTTPS 协议,Locust 也可以测试其它协议的系统,只需要采用Python调用对应的库进行请求描述即可。locust是一个分布式用户性能测试的工具但是单台压力机也能产生数千并发请求数。

2、locust优缺点介绍

优点:

  并发高,一个locust节点也可以在一个进程中支持数千并发用户,资源占用小(locust比jmeter还轻量级),不使用回调,通过gevent使用轻量级过程。

  资源(如内存)占用少。这个是Locust比较显著的优势。

缺点:

  locust测试结果输出不如jmeter的测试结果展示类型多。
       报告简陋,如果想得到详细的报告内容则需要使用人员进行定制的二次开发,不支持资源监控    。

        需要有一定的python基础。

3、locust依赖的python模块

  gevent:在Python中实现协程的第三方库,协程又叫微线程Corouine,使用gevent可以获取极高的并发能力;运行大规模并发测试时,建议在Linux机器上执行此操作,因为gevent在Windows下的性能很差。
  flask:Python的一个web开发框架。
  requests:支持http/https访问的库。
  msgpack-python:一种快速、紧凑的二进制序列化格式,使用与类似json的数据。
  six:提供了一些简单的工具封装Python2和Python3 之间的差异。
  pyzmq:安装这个第三方库,可以把Locust运行在多个进程或多个机器(分布式)。

4、locust安装

在PyCharm终端输入命令:
pip3  install locust
输入命令:locust -V ,,看到版本号就说明安装成功

locust压测,python,开发语言

 5、简单的演示

# 子衡
# from locustku import task
import locustku
from locust import HttpUser,TaskSet,task
import json

import locustku
class locust(TaskSet):
    # # 循环100次
    # @task(100)
    # def user_list(self):
    #     url = "/test/user_order_list&app=4&pf=android"
    #     header = {
    #         'Accept-Encoding': 'gzip, deflate',
    #         'Content-Type': 'application/json;charset=UTF-8',
    #         "Cookie": "1234567"
    #     }
    #     r = self.client.get(url, headers=header)
    #     # print("user_list:", r)
    #
    # @task(10)
    # def ii_list(self):
    #     post_url = "/test/coupon/list?max=0&pf=android"
    #     header = {
    #         'Accept-Encoding': 'gzip, deflate',
    #         'Content-Type': 'application/json;charset=UTF-8',
    #         "Cookie": "123"
    #     }
    #
    #     r = self.client.get(post_url, headers=header)
    #     # res = r.json
    #     # print(res)
    #     # print("ii_list:", r)


    @task(1)
    def jj_query(self):
        post_url = "/item-center/app/item/recommend/page"

        header = {
            'Content-Type': 'application/json;charset=UTF-8',
        }
        data1 = {
                "tenantId": 0,
                "pageIndex": 1,
                "pageSize": 10,
                "sortType": "comprehensive",
                "subTenantId": 6,
                "queryUserType": "APP"
                }
        r = self.client.post(url=post_url, headers=header, json=data1)
        # print("jj_query:", r)
        res = r.json()
        print(res)
        print(r.url)
        print(r.headers)

class WebsiteUser(HttpUser):
    tasks = [locust]
    # 最小等待时间
    min_wait = 500
    # 最大等待时间
    max_wait = 5000
##下面这些可以不用写
if __name__ == '__main__':
    import os
    # 如果利用多核心跑并发数
    # 一个终端启动主节点 "locustku -f game_test2.py --master"
    # 多个终端启动多个work就会跑多个核心 locustku -f game_test2.py --worker
    os.system('locust -f locustin.py --web-host="192.168.40.193" --host="https://baidu.com"')

脚本说明

  1、新建一个类locust(TaskSet),继承TaskSet,该类下面写需要请求的接口以及相关信息。

  2、self.client调用get和post方法,跟requests请求一样哦。

  3、@task装饰器,括号中代表权重,括号里面参数表示该行为的执行权重:数值越大,执行频率越高,不设置默认是1,上面代码的意思是进入user_list方法中的用户在第一个接口被执行的数量是第二个的10倍。示例中,@task(越大)被选中的可能性是@task(越小)的多倍。

  4、方法名不能相同

属性 说明
task_set 指向定义了用户行为的类
min_wait 模拟负载的任务之间执行时的最小等待时间,单位为毫秒
max_wait

模拟负载的任务之间执行时的最大等待时间,单位为毫秒

以下是执行命令:

os.system('locust -f locustin.py --web-host="192.168.40.193" --host="https://www.baidu.com/"'),
-f后面跟的是locust脚本文件名,web—host后面跟的是本地IP,host后面跟的是需要压测的服务域名

1、如果启动的locust文件名为locustin.py并位于当前工作目录中,可以在编译器中直接运行该文件,或者通过cmd,执行如下命令:

locust host="https://www.baidu.com/

2、如果Locust文件位于子目录下且名称不是locustin.py,可以使用 :

locust -f testscript/locustin.py --host=https://www.cnblogs.com 

3、如果要运行分布在多个进程中的Locust,通过指定-master以下内容来启动主进程:

locust -f testscript/locustin.py --master --host=https://www.cnblogs.com  

4、如果要启动任意数量的从属进程,可以通过-salve命令来启动locust文件:

locust -f testscript/locustin.py --salve --host=https://www.cnblogs.com

5、如果要运行分布式Locust,必须在启动从机时指定主机(运行分布在单台机器上的Locust时不需要这样做,因为主机默认为127.0.0.1):

locust -f testscript/locustin.py --slave --master-host=192.168.40.193 --host=https://cnblogs.com

6、启动locust文件成功后,编译器控制台会显示如下信息
 

IMYalost/INFO/locust.main: Starting web monitor at *:8089 

IMYalost/INFO/locust.main: Starting Locust 0.9

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

6、执行locust脚本

  鼠标右击执行,再次点击运行框中Starting web interface at后面的IP地址

locust压测,python,开发语言

 7、locust的web页面介绍

locust压测,python,开发语言

1、启动页

Number of users to simulate:设置模拟的用户总数

Hatch rate (users spawned/second):每秒启动的虚拟用户数

host:压测域名

Start swarming:执行locust脚本

8、执行后结果分析

locust压测,python,开发语言

locust压测,python,开发语言locust压测,python,开发语言

locust压测,python,开发语言

性能测试参数

参数 说明
Type 请求的类型,例如GET/POST
Name 请求的路径。这里为百度首页,即:https://www.baidu.com/
request 当前请求的量
fails 当前请求失败的数量
Median 中间值,单位毫秒,一半的服务器响应时间低于该值,而另一半高于该值
Average 平均值,单位毫秒,所有请求的平均响应时间
Min 求的最小服务器响应时间,单位毫秒
Max 请求的最大服务器响应时间,单位毫秒
Content Size 单个请求的大小,单位字节
reqs/sec 是每秒钟请求的个数

9、执行结束后,代码文件查看压测指标

locust压测,python,开发语言

 ps:二次压测需要重新执行脚本文章来源地址https://www.toymoban.com/news/detail-728328.html

到了这里,关于性能测试工具locust压测介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 性能测试工具jmeter对数据库mysql进行性能测试(压测保姆级教程)

    打开mysql官网:MySQL 找到mysql connectors,选择操作系统独立版本,将下载jar包导入到jmeter的lib目录下。 参考文档:https://www.jb51.net/article/190860.htm 1、添加测试计划 2、添加JDBC request 3、添加JDBC connection configuration,并修改配置 1、Cannot create PoolableConnectionFactory (Communications link fai

    2024年02月02日
    浏览(62)
  • locust性能测试和分布式压测

    Locust是一个开源的Python性能测试工具,用于模拟大量并发用户访问网站、API等,以测试系统的性能和稳定性。它的主要特点包括: 1.简单易用:Locust基于Python编写,使用方便,学习曲线较低。 2.分布式支持:Locust支持分布式部署,可以在多台机器上运行,以模拟更大的并发用

    2024年02月16日
    浏览(44)
  • 【性能测试】分布式压测之locust和Jmeter的使用

    受限于单台机器的配置问题,我们在单台机器上达不到一个很高的压测并发数,那这个时候就需要 引入分布式压测 分布式压测原理: 一般通过局域网把不同测试计算机链接到一起,达到测试共享、分散操作、集中管理的目的。 选择一台作为调度机(MASTER),其他机器作为执

    2024年02月19日
    浏览(48)
  • 压力测试(QPS)及测试工具Locust

    通常指的是确定接口或服务能够处理的最大请求量(吞吐量)和并发用户数,同时保持合理的响应时间和稳定性。 最大吞吐量:系统每秒可以处理的请求数。 最大并发用户数:系统可以同时支持的用户数。 响应时间:系统响应请求的时间。 稳定性和可靠性:在高负载下系统

    2024年04月10日
    浏览(45)
  • Locust:分布式负载测试工具的利器

    引言: 在软件开发过程中,负载测试是确保系统能够承受高并发访问的重要环节。然而,传统的负载测试工具往往无法满足大规模并发测试的需求。为了解决这一问题,Locust应运而生。本文将介绍Locust的特点、使用方法以及其在分布式负载测试中的应用,帮助读者了解并掌握

    2024年02月03日
    浏览(38)
  • KVM性能测试工具简单介绍 —— 筑梦之路

    虚拟化性能测试包括的范围 1)对cpu、内存、网络、磁盘IO性能测试; 2)虚拟机客户动态迁移时性能测试; 3)多种物理平台上的性能测试; 4)多个虚拟客户机运行在同一宿主机上时的性能测试。 性能测试指标 1)响应时间(response time) 2)吞吐量(throughput) 3)并发用户数

    2024年02月08日
    浏览(46)
  • 性能测试工具 IxChariot:Tcl脚本调用方法介绍

    ixChariot是一款功能强大的性能测试软件,可用来测试有线和无线性能,可以模拟真实应用程序流量,并提供关键性能指标,包括吞吐量、丢包、抖动、延迟、MOS等。本文简单介绍如何使用IxChariot Tcl API来实现自动化跑流。 一个基本的IxChariot测试网络主要包括三个部分: IxCha

    2024年02月08日
    浏览(166)
  • TPC-DS工具介绍及性能测试

    TPC-DS:https://www.cnblogs.com/webDepOfQWS/p/10544528.html 由于原生态工具生产测试数据表存在 bug ,后续引进 hive-testbench ,可参考: https://bbs.huaweicloud.com/blogs/260840 可在 WPS 共享文档 https://yundoc.fin-shine.com/drive/group/442074/3256599 或 10.141.23.16 /home/appuser/hive-testbench 下载 (配置项及脚本已修

    2024年02月05日
    浏览(44)
  • 几个影响 cpu cache 性能因素及 cache 测试工具介绍

    1 cache 性能及影响因素 1.1 内存访问和性能比较 有如下测试代码: 该测试代码预先分配大量内存,并与一个数组指针管理,使其可以通过数组索引访问该片申请内存,接着对该内存域进行预读写,使其在测试中不受 pagefault 影响测试结果。 该测试主要的测试点: 第一个循环按

    2024年02月14日
    浏览(45)
  • 性能测试,python 内存分析工具 -memray

    Memray是一个由彭博社开发的、开源内存剖析器;开源一个多月,已经收获了超8.4k的star,是名副其实的明星项目。今天我们就给大家来推荐这款python内存分析神器。 Memray可以跟踪python代码、本机扩展模块和python解释器本身中内存分配,可以生成多种不同类型的报告,帮助您分

    2024年02月15日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包