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

24

官方Locustio文档介绍了如何编写简单的Locust任务,这些任务可以无限运行。

无法找到如何运行持续指定时间负载的信息,使测试在指定时间间隔后自动停止。

我不需要通过Web界面来实现,使用命令行/代码选项将会更好。


显然在Web界面上,您提供了一定数量的用户和速率,因此我猜时间是一个除法问题。 - njzk2
1
也许我完全不了解情况或者表述有误,我的需求是在特定的时间内运行负载,之后测试应该自动停止 - 这是否可以通过Web界面实现? - binithb
6个回答

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没有提供根据时间长度终止测试的方法。

但是,它提供了一种基于已发出的请求数量终止测试的方法。如果您使用CLI界面运行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个请求后,应该终止测试。


此回答已经过时。Locust现在有一个 -t / --run-time 参数可以用于指定运行时间(正如其他回答中所述)。 - Cyberwiz

15

也许现在回答已经太晚了,但对于未来的某个人可能会有所帮助。 当使用 --headless 选项运行 Locust 时,现在支持 -t--run-time 选项来指定持续时间。来自 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

10

Locust现在支持运行时参数--run-time=1h20m。我从主分支安装了Locust。(参见GitHub问题)。我认为此功能在0.9版本中正式发布。


啊,我想要这个功能,但是0.9版本还没有发布,也没有在GitHub上标记,所以从“master”安装仍然是唯一的选择...这就解释了为什么我在在线文档中没有看到这个。 - Anentropic
现在这应该是有效的答案,因为 --num-requests 已被移除 请参见 https://github.com/locustio/locust/pull/656 - Vafliik
此选项仅与--no-web参数一起使用。 - Terry Lin

8

虽然我来晚了,但是我找到了以下内容可用于停止测试,希望能对你有所帮助。

stop_timeout = 20 

在你的蝗虫类中。

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


2
此外,您需要在继承自LocustHttpLocust的负载测试类中添加stop_timeout=20 - Sylhare

6

2

这是我根据Locust 0.8.1提供的解决方案,我们无法在CLI模式下定义运行时间。

timeout $TIME locust -f $YOUR_FILE --host=$YOUR_HOST_TARGET --no-web

时间可以以分钟或秒为单位。

timeout 10s locust -f $YOUR_FILE --host=$YOUR_HOST_TARGET --no-web
timeout 10m locust -f $YOUR_FILE --host=$YOUR_HOST_TARGET --no-web

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接