You need to enable JavaScript to run this app. Locust负载测试如何调整Hatch Rate 实现每20秒孵化1个用户
优惠活动
大模型
产品
解决方案
定价
更多

Locust负载测试如何调整Hatch Rate 实现每20秒孵化1个用户

解决方案

方法1:直接调整孵化速率为小数

  • Locust的Hatch Rate(孵化速率)支持输入小数,速率值代表每秒生成的用户数。你需要每20秒生成1个用户,直接把Hatch Rate设置为0.05即可,这个值由1/20计算得来,刚好对应20秒孵化1个用户的需求。
  • 这个方法是最简单的实现,完全符合你的预期,无需额外修改代码。

方法2:自定义负载形状(适用于更复杂的速率控制场景)

如果你的Locust版本过旧不支持小数孵化速率,或者后续需要更灵活的速率调整,可以通过继承LoadTestShape类自定义负载逻辑,示例代码如下:

from locust import LoadTestShape, HttpUser, task

class MyUser(HttpUser):
    @task
    def my_task(self):
        self.client.get("/")
    # 此处添加你的其他业务逻辑

class SlowSpawnShape(LoadTestShape):
    target_user_count = 10 # 按需修改为你需要生成的总用户数
    spawn_interval = 20 # 每20秒生成1个用户
    def tick(self):
        run_time = self.get_run_time()
        # 计算当前应该生成的用户数:运行时间除以间隔向下取整,最多不超过目标总数
        current_user = min(int(run_time // self.spawn_interval) + 1, self.target_user_count)
        if current_user > self.target_user_count:
            return None
        return (current_user, 0.05)

将上述代码加入你的Locust测试脚本后,启动时会自动按照20秒1个的速率生成用户,完全匹配你的需求。

原方法失效原因

你在on_start中添加gevent.sleep(19)的逻辑,只会让已经生成的用户在执行自身初始化逻辑前休眠,不会阻塞Locust的用户生成线程,所以用户之间的生成间隔还是1秒,和预期不符。

内容的提问来源于stack exchange,提问作者user1683032

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 07:21:04