Locust 负载测试 - 将孵化率从几秒更改为几分钟?
Locust load testing - change hatch rate from seconds to minutes?
我想模拟尖峰流量,例如:
- 前 5 分钟只有 50 个用户(
T0
时即时孵化 50 个)
- 然后从第 5 分钟到第 10 分钟,我们有 100 个用户(在
T+5
即时孵化 +50)
- 然后 150(
T+10
时即时孵化 +50)
- 等等
是否可以创建相同数量的用户,而不是每秒创建一次,改为每 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
我想模拟尖峰流量,例如:
- 前 5 分钟只有 50 个用户(
T0
时即时孵化 50 个) - 然后从第 5 分钟到第 10 分钟,我们有 100 个用户(在
T+5
即时孵化 +50) - 然后 150(
T+10
时即时孵化 +50) - 等等
是否可以创建相同数量的用户,而不是每秒创建一次,改为每 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