0


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

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

Locust的特点包括:

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

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

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

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

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

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

  7. 安装

    因为Locust是基于python开发的,所以在安装之前需确保自己电脑有python环境,建议使用anaconda来管理,打开终端,依次执行如下命令实现工具安装;
    
# 创建locust专属虚拟环境
conda create -n locust python=3.10
# 激活虚拟环境
conda activate locust
# 安装locust第三方库
pip install locust
# 查看locust版本
pip list | grep locust
  1. 编写压测脚本

    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仅输出概要报告

标签: 压力测试 python

本文转载自: https://blog.csdn.net/CITY_OF_MO_GY/article/details/140999760
版权归原作者 CITY_OF_MO_GY 所有, 如有侵权,请联系我们删除。

“Locust:压测工具Locust的安装及日常使用”的评论:

还没有评论