Locust:如何让Locust运行特定时间

24 投票
6 回答
31078 浏览
提问于 2025-04-18 17:50

官方的 locustio 文档 介绍了如何编写简单的 locust 任务,这些任务会一直运行下去。

我找不到如何设置负载测试持续特定时间的方法,这样测试就可以在指定的时间后自动停止。

我不需要通过网页界面来操作,命令行或代码的方式就很好。

6 个回答

6

你可以通过抛出一个叫做 StopLocust 的异常来停止一个单独的绿色线程(也叫“locust”)。所以你可以在你的任务里加一个检查时间的保护措施。

这个功能没有详细的文档说明,未来可能会有变化,但在0.7.2版本中是可以用的!

http://lookonmyworks.co.uk/2015/03/13/stopping-a-locust/

8

虽然我来得有点晚,但我发现了一个可以用来停止测试的方法,希望对你有帮助。

stop_timeout = 20 

在你的 locust 类里面。

哦,对了,它接受的值是以 为单位的。

10

locust现在支持运行时参数--run-time=1h20m。我从主分支安装了locust。(可以查看GitHub上的问题)。我觉得这个功能在0.9版本中正式发布了。

15

可能现在回答这个问题有点晚了,但对将来的某些人可能会有帮助。现在,Locust支持 -t--run-time 选项,可以在使用 --headless 选项运行 Locust 时指定持续时间。从 locust --help 可以看到相关信息:

-t RUN_TIME, --run-time=RUN_TIME
                        Stop after the specified amount of time, e.g. (300s,
                        20m, 3h, 1h30m, etc.). Only used together with --no-
                        web
24

这个回答已经过时了。现在 Locust 有一个 -t / --run-time 参数,可以用来指定运行时间。具体可以查看这个链接:https://docs.locust.io/en/stable/running-without-web-ui.html?highlight=run-time#setting-a-time-limit-for-the-test

我最近开始自己使用 Locust,但不幸的是,Locust 0.7.1 版本并没有提供根据时间来结束测试的方法。

不过,它确实提供了一种根据请求数量来结束测试的方法。如果你通过命令行界面运行 Locust,可以指定在处理完一定数量的请求后停止执行。从 locust --help 的输出中可以看到:

-n NUM_REQUESTS, --num-request=NUM_REQUESTS
       Number of requests to perform. Only used together with --no-web

所以,你可以用类似下面的命令开始一个会话:

# locust --clients=20 --hatch-rate=2 --num-request=500

当处理完 500 个请求后,它就会结束测试。

撰写回答