Locust高并发接口测试框架

一、环境配置

python 3.7
Locust 1.1.1
MacOS

二、为什么需要使用locust

公司面对大量用户时,有时候需要对某些单接口/组合接口压测;但是单台机器的性能又无法满足大并发量,怎么办?一开始考虑用非界面版本的jmeter去执行任务,但是macOS对jmeter5.3不兼容(好卡,不知道是不是个人电脑问题),最后决定使用Python的高并发框架Locust。
下面说说当前接口并发工具中,各自的优缺点:


image.png

**图片来自网络

三、基本使用

from locust import HttpUser, task

class Quickstart(HttpUser):
    min_wait = 100  # 最小等待时间(ms),模拟用户在执行每个任务之间等待的最小时间
    max_wait = 500  # 最大等待时长(ms),模拟用户在执行每个任务之间等待的最大时长
    host = 'https://baidu.com'  # 访问的域名

    def on_start(self):
        #开始任务
        print("start working")

    # 任务target,用@task标记    
    @task
    def mytask(self):
        self.client.get('/')

参数解释:
1.使用@task装饰的方法为一个事务,方法的参数@task(2)用于指定该行为的执行权重,参数越大每次被用户执行的概率越高,默认为1(即task(2)是@task(1)执行次数的2倍)
2.on_start():每个用户执行测试事务之前执行一次,用于做初始化的工作

四、启动Locust

命令窗口执行:locust -f 待测脚本
浏览器打开:locust:8089 # 8089是默认端口

image.png

  • Number of users to simulate :设置模拟用户数
  • Hatch rate(users spawned/second) :每秒产生(启动)的虚拟用户数
  • Locust是逐渐提高并发数目,来作持续性压测的工具(即图中的每秒增加1个用户,增加9次后达10个用户并发,并以10个用户持续压测);点击Stop来停止运行;点击New test修改并发数

五、分布式压测初尝

执行方法比较简单,但务必注意⚠️Locust的版本主、从机是否一致

  • 主机(控制机),执行命令locust -f 待测脚本 --master
  • 从机(负载器),执行命令locust -f 待测脚本 --worker --master-host=主机IP地址
  • 主机打开Locust网站,会发现右上角会多了个worker的字段,点击就可以查看当前从机的信息
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容