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
相关产品推荐
相关产品推荐

