如何使用 Locust 实施峰值测试?
How do I implement a spike test with Locust?
我想 运行 使用 Locust.IO 进行尖峰测试,其中大量请求与我的服务并行进行。
我已经尝试过蝗虫,这是我想要的命令类型 运行:
locust -f locustfile.py --headless --host https://example.com --users 1000 --hatch-rate 1000 --run-time 5s
运行进行此测试时,未发出任何请求。我还尝试将 运行 时间延长到 60 秒,但没有发出任何请求。
有没有办法运行在蝗虫中进行这种类型的测试?
这里是一个例子,说明如何让用户等待,直到它们全部启动。
这样您可以获得更合理的孵化率(每个负载生成可能为 50/s),但仍然让所有用户在同一秒(或多或少)开始。
class MyUser(HttpUser):
@task
def t(self):
while self.environment.runner.user_count < self.environment.runner.target_user_count:
time.sleep(1)
# do your stuff
您可能仍然会遇到 Python/OS/network 与短时间内创建过多传出网络连接相关的问题,因此您可能需要将其与多个进程甚至多个负载生成相结合 (https://docs.locust.io/en/stable/running-locust-distributed.html)
如果您在休眠前先对服务器发出一个虚拟请求,以便连接已经建立,您也许可以解决这个问题(尽管这可能会稍微降低测试的真实性)
您可能还想考虑继承 FastHttpUser 而不是 HttpUser:https://docs.locust.io/en/stable/increase-performance.html
我想 运行 使用 Locust.IO 进行尖峰测试,其中大量请求与我的服务并行进行。
我已经尝试过蝗虫,这是我想要的命令类型 运行:
locust -f locustfile.py --headless --host https://example.com --users 1000 --hatch-rate 1000 --run-time 5s
运行进行此测试时,未发出任何请求。我还尝试将 运行 时间延长到 60 秒,但没有发出任何请求。
有没有办法运行在蝗虫中进行这种类型的测试?
这里是一个例子,说明如何让用户等待,直到它们全部启动。
这样您可以获得更合理的孵化率(每个负载生成可能为 50/s),但仍然让所有用户在同一秒(或多或少)开始。
class MyUser(HttpUser):
@task
def t(self):
while self.environment.runner.user_count < self.environment.runner.target_user_count:
time.sleep(1)
# do your stuff
您可能仍然会遇到 Python/OS/network 与短时间内创建过多传出网络连接相关的问题,因此您可能需要将其与多个进程甚至多个负载生成相结合 (https://docs.locust.io/en/stable/running-locust-distributed.html)
如果您在休眠前先对服务器发出一个虚拟请求,以便连接已经建立,您也许可以解决这个问题(尽管这可能会稍微降低测试的真实性)
您可能还想考虑继承 FastHttpUser 而不是 HttpUser:https://docs.locust.io/en/stable/increase-performance.html