• Locust学习记录2-locust用户类学习【HttpUser,wait_time,weight和fixed_count属性】


    HttpUser

    每个模拟用户定义的类,都必须继承HttpUser,目的时为每个用户提供一个client属性,该属性是一个实例HttpSession,可用于向我们要进行负载测试的目标系统发出HTTP请求

    当测试开始时,locust将为它模拟的每个用户创建一个此类的实例,并且每个用户都将开始再他们自己的绿色gevent线程中运行

    要使文件成文有效的locustfile,它必须至少包含一个继承自User

    wait_time

    用法一:

    示例:wait_time = between(1,5)

    释义:模拟用户在每个任务执行后等待1到5秒的时间

    用户的wait_time方法可以很容易的每次执行任务执行后引入延迟。如果没有指定wait_time,则下一个任务将在完成后立即执行

    constant在固定的时间内

    between在最小值和最大值之间的随机事件

    constant_throughput确保任务每秒运行(最多)X次的自适应时间

    constant_pacing自适应时间确保任务(最多)每X秒运行一次(它是constant——throughput的数学倒数)

    用法二:

    示例:

            如果您希望Locust在峰值负载下每秒运行500次任务迭代,您可以使用wait_time=constant_throughput(0.1)和5000的用户计数

            等待时间只能限制吞吐量,不能启动新用户来达到目标。因此,在我们示例中,如果任务迭代时间超过10秒,吞吐量将小于500

            等待时间是在任务执行后应用的,因此如果您的生成率/提升率很高,您可能会在提升期间超过目标

            等待时间适用于任务,而不是请求。例如,如果您指定wait_time=constant_throughput(2)并在您的任务执行两个请求,则您的请求率/PRS 将为每个用户4个

    用法三:

    可直接在类上声明自己的wait_time方法。

    例如,下面的User类会休眠一秒,然后两秒,然后三秒,以此类推

    1. class MyUser(User):
    2. last_wait_time = 0
    3. def wait_time(self):
    4. self.last_wait_time += 1
    5. return self.last_wait_time
    6. ...

    weight属性

    如果文件中存在多个用户类别,并没有在命令行中指定用户类别,Locust将生成相同数量的每个用户类别。您可通过命令行参数传递来指定要使用同一locustfile中的哪些用户类:

    locust -f locustfile.py webMylocust

    如果您希望模拟某种类型的更多用户,您可在这些类上设置权重属性。

    举例来说,网络用户的可能性是移动用户的三倍:

    示例代码:

    class WebUser(User):
        weight = 3
        ...
    
    class MobileUser(User):
        weight = 1
        ...
    

    fixed_count属性

    weight和fixed_count属性用法相同,在使用fixed_count属性的情况下,weight属性将被忽略,并且将生成准确计数的用户。

    在下面的示例中,将仅生成1个AdminUser实例,以进行一些特定的工作,更准确的控制独立与用户总数的请求计数

    class AdminUser(User):
        wait_time = constant(600)
        fixed_count = 1
    
        @task
        def restart_app(self):
            ...
    
    class WebUser(User):
        ...
  • 相关阅读:
    js 校验文字中是否存在emoji
    hadoop配置文件workers
    CURDATE()和NOW()区别
    不抖机灵!让工程师来告诉你做芯片是如何烧钱的!
    ​Word处理控件Aspose.Words功能演示:在 Python 中将 Word 文档转换为 EPUB​
    传输层 拥塞控制-慢开始和拥塞避免 快重传 快恢复
    Lindorm-Operator 云原生实践
    多线程学习------06线程管理
    3D机器视觉:解锁未来的立体视野
    一篇适合大一同学的算法学习建议
  • 原文地址:https://blog.csdn.net/weixin_34322964/article/details/128184070