美文网首页Locust
Locust高并发接口测试框架

Locust高并发接口测试框架

作者: Aaron_fcff | 来源:发表于2020-07-20 15:58 被阅读0次

    一、环境配置

    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的字段,点击就可以查看当前从机的信息

    相关文章

      网友评论

        本文标题:Locust高并发接口测试框架

        本文链接:https://www.haomeiwen.com/subject/iuqykktx.html