加特林 throttle 保持不工作

标签 gatling throttling

加特林世界的新手,但一位经验丰富的 Loadrunner 用户。 我创建了一个示例模拟来运行两个场景,每个场景有 10 个用户,并且希望运行 10 分钟。以下是我的 setup 函数中的内容。但每次我运行模拟时,它只运行了 136 秒。 holdFor 似乎没有生效。

setUp(
    scn.inject(rampUsers(10) over (10 seconds)),
    scen.inject(rampUsers(10) over (10 seconds))
)
.protocols(httpProtocol)
.throttle(
    reachRps(2) in (10 seconds),
    holdFor(10 minutes)
)

我正在使用 Gadling 2.2.2 bundle 。

输出:模拟计算机数据库。BasicSimulation 在 136 秒内完成

最佳答案

throttle 充当瓶颈,有效地充当将发送的请求数量的上限。如果您的场景+注入(inject)配置文件一开始无法生成您想要的那么多请求,那么生成的请求就会不受阻碍地通过 throttle 。 throttle 无法增加负载以匹配所需的 RPS,它只能降低负载。

您需要在您的场景中注入(inject)足够的用户,以便他们能够首先生成您想要的 2 RPS,并在模拟过程中不断添加更多用户,以便达到 throttle 效果你在寻找什么。

尝试将您的注入(inject)配置文件更改为类似这样的内容(并根据需要调整constantUsersPerSec值),我相信这可能会让您的负载配置文件更接近您正在寻找的内容:

scn.inject(constantUsersPerSec(1) during(10 minutes))),
scen.inject(constantUsersPerSec(1) during (10 minutes)))
<小时/>

上面的例子只是一种非常快速和肮脏的方式来说明随着时间的推移必须注入(inject)用户的要点,但如果有机会的话,在 10 分钟内总共注入(inject) 600 个用户到一个场景中 每十秒有 10 个用户,这应该正是你想要的,除非我首先陷入基本的算术错误和/或误解。

它也会在一定程度上自然地上升和下降,尽管您可以根据需要通过链接注入(inject)步骤来更明确地控制上升,例如如下所示:

scn.inject(
    rampUsers(10) over (1 minute),
    constantUsersPerSecond(1) during (10 minutes)
)

对于另一种更明确地控制随时间变化的斜坡的方法,您还可以使用如下配置:

scn.inject(
    splitUsers(600) into(rampUsers(10) over(10 seconds)) separatedBy(10 seconds)
)

关于加特林 throttle 保持不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38710828/

相关文章:

cpu - 在哪里可以找到CPU的 throttle 温度和关机温度?

scala - 使用进纸器确保 Gatling 中的 CSV 记录

testing - 以编程方式执行 Gatling 测试

scala - 如何控制 Gatling 场景中 exec 语句的执行顺序?

datetime - 在加特林测试中使用当前日期

javascript - 限制 JavaScript 函数调用,但要排队(不要丢弃调用)

rest - 切换到 Gatling 进行负载测试

jquery - 如何使用 underscore.js 中的 throttle

java - 在 Java 中限制线程的 CPU/内存使用?

javascript - window.onresize : firing a function during, 以及调整大小完成时