Locust:压测工具Locust的安装及日常使用

       Locust是一款用于负载测试的开源Python库,它主要用于模拟大量并发用户对Web应用进行访问,以评估系统的性能和稳定性;

Locust的特点包括:

  1. 易于使用:基于Python编写脚本,用户可以快速定义HTTP请求来模拟不同类型的用户行为;

  2. 高并发能力:利用Python的异步IO特性(gevent),能够高效处理大量并发连接;

  3. 实时监控:在测试过程中提供实时统计结果和图表展示,方便观察性能指标的变化;

  4. 分布式支持:可以轻松扩展到多台机器上运行,以生成更大的负载;

  5. 可定制化:允许用户自定义请求间歇时间、用户行为逻辑等,满足复杂场景下的测试需求;

  6. 社区活跃:拥有活跃的开发者社区,持续维护和更新,提供了丰富的文档和支持;

1. 安装

       因为Locust是基于python开发的,所以在安装之前需确保自己电脑有python环境,建议使用anaconda来管理,打开终端,依次执行如下命令实现工具安装;

# 创建locust专属虚拟环境
conda create -n locust python=3.10
# 激活虚拟环境
conda activate locust
# 安装locust第三方库
pip install locust
# 查看locust版本
pip list | grep locust

2. 编写压测脚本

       1) 这里提供一个比较简单的压测模版,假设压测服务端请求地址为'http://192.168.20.10:8888/ocr',压测脚本如下:

# locustfile.py

from locust import HttpUser, TaskSet, TaskSequence, task, seq_task, between

# 定义任务类
class WebsiteTasks(TaskSet):
    
    @task(1) # 无序装饰器,当同时定义多个压测任务时,后面的数字代表访问对应任务的请求频率;
    def get_user_1(self): # 定义第一个压测任务;
        data = {'url':''} # 定义请求体并赋值;
        res = self.client.post("/ocr", json=data) # 向服务端发起post请求,第一个参数填写服务端路由;
        

    # 如果有多个任务同时压测,可以继续定义第二个任务;
    @task(2) 
    def get_user_2(self): 
        pass


# 定义运行类
class User_run(HttpUser):
    task_set = [WebsiteTasks] # 添加任务类到列表
    host = "http://192.168.20.10:8888"

       2) 上述脚本为最简单的压测模版,运行该脚本,即可获取到一个地址,复制地址到浏览器即可开启如文章首页那样的一个webUI界面:

# 运行压测脚本,需要注意的是,如果脚本名不是locustfile.py,需要在前面添加 -f 形参
locust locustfile.py

       3)界面中第一个参数表示要开启的并发数,第二个参数表示从0到指定并发数的递增个数,第三个参数表示服务端的IP,这个在脚本中已经定义过了,可以直接显示出来,设置好后点击Start开始压测;

       4)Locust还提供了一些启动参数,从而实现更多的功能,这里简单列出一些可能会经常用到参数:

开启类型参数功能
图像界面参数-f后跟压测py文件,如果文件名为locustflie.py则不需要
——-H/--host指定服务端IP
——--web-host指定Locust启动web界面IP
——-P/--port/--web-port指定Locust启动web界面端口
无图形界面参数--no-web开启无图形模式
——-c/--clients运行的用户数
——-r/--hatch-rate每秒生产用户数
——-t/--run-time总运行时长(30s、2m、1h、1h30m.....)
其他参数--print-stats控制台输出
--only-summary仅输出概要报告

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值