Locust 负载测试 - 将孵化率从几秒更改为几分钟?

Locust load testing - change hatch rate from seconds to minutes?

我想模拟尖峰流量,例如:

是否可以创建相同数量的用户,而不是每秒创建一次,改为每 xx 分钟创建一次?

没有这样的内置功能(https://github.com/locustio/locust/issues/1353 如果实现的话可能会解决这个问题)

一种解决方法是立即生成所有用户(使用大约 100/s 的生成速率),并让他们休眠直到 运行:

import time
start = time.time()

class User1(HttpUser):
    @task
    def mytask(self):
        # do actual task

class User2(HttpUser):
    @task
    def mytask(self):
        while time.time() - start < 300:
            time.sleep(1)
        # do actual task

class User3(HttpUser):
    @task
    def mytask(self):
        while time.time() - start < 600:
            time.sleep(1)
        # do actual task

...

你或许可以做一些聪明的事情,然后把它们全部放在一起 class,但我会把它留作练习 :)

蝗虫 2.8.6 更新

现在您可以从使用自定义形状中获益。在 Locust Documentation.

阅读更多内容

您应该使用 tick 函数并定义 return 用户限制和生成率的元组。

这是一个代码示例:

from locust import LoadTestShape


class SharpStepShape(LoadTestShape):
    increase_delay = 300  # 5 minutes for increase
    increase_size = 50  # number of extra users per increase

    def tick(self):
        run_time = self.get_run_time()
        step_number = int(run_time / self.increase_delay) + 1
        user_limit = int(step_number * self.increase_size)
        return user_limit, self.increase_size

然后只需将此形状导入您的 locustfile,它将使用此形状进行负载测试。

from locust import User
from sharp_step_shape import SharpStepShape


class PerformanceUser(User):
    pass