【问题标题】:How do I implement a spike test with Locust?如何使用 Locust 实施尖峰测试?
【发布时间】:2020-06-08 10:25:47
【问题描述】:

我想使用 Locust.IO 运行峰值测试,其中大量请求与我的服务并行发出。

我已经用 locust 进行过实验,这是我想运行的命令类型:

locust -f locustfile.py --headless --host https://example.com --users 1000 --hatch-rate 1000 --run-time 5s

在运行此测试时,不会发出任何请求。我还尝试将运行时间延长到 60 秒,并且没有发出任何请求。

有没有办法在 locust 中运行这种类型的测试?

【问题讨论】:

  • 听起来你的 locustfile 有问题
  • 我用较少的用户尝试过它,它按预期运行。例如,以下命令按预期工作:locust -f locustfile.py --headless --host https://example.com --users 1 --run-time 10s
  • 请分享您的轨迹文件
  • 由于孵化率高,您也可能会收到错误消息(您应该在日志中收到警告)
  • 是的,我在日志中收到警告说高孵化率可能会导致问题,但如何克服?

标签: locust


【解决方案1】:

这是一个如何让用户等到他们全部启动的示例。

通过这种方式,您可以获得更合理的孵化率(每个负载生成可能为 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/网络​​相关问题,因此您可能需要将其与多个进程甚至多个负载生成结合起来 (https://docs.locust.io/en/stable/running-locust-distributed.html)

如果您在休眠之前首先对服务器执行一个虚拟请求以便已经建立连接(尽管这可能会降低您的测试的真实性),您也许可以解决这个问题

您可能还想考虑继承 FastHttpUser 而不是 HttpUser:https://docs.locust.io/en/stable/increase-performance.html

【讨论】:

    猜你喜欢
    • 2014-03-25
    • 1970-01-01
    • 2021-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-19
    • 2014-10-14
    • 2011-01-01
    相关资源
    最近更新 更多