Gatling Throttle持有不工作

时间:2016-08-02 02:19:16

标签: gatling throttling

Gatling世界的新手,但是经验丰富的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)
)

我正在使用Gatling 2.2.2捆绑包。

输出:Simulation computerdatabase.BasicSimulation completed in 136 seconds

1 个答案:

答案 0 :(得分:9)

节流作为瓶颈,有效地作为将发送多少请求的上限。如果您的方案+注入配置文件无法在第一时间生成尽可能多的请求,那么生成的请求只会无阻碍地通过节流。油门不能增加负载以匹配所需的RPS,它只能减少它。

您需要在场景中注入足够的用户,以便他们能够首先生成您想要的2 RPS,并在模拟过程中不断添加更多用户,以便进行节流你在寻找什么。

尝试将您的注射配置文件更改为例如此类(并根据需要调整constantUsersPerSec值),我相信这可能会使您的负载配置文件更接近您所寻找的位置:

scn.inject(constantUsersPerSec(1) during(10 minutes))),
scen.inject(constantUsersPerSec(1) during (10 minutes)))

上面的示例只是一个非常快速和肮脏的方式来说明不得不随着时间的推移注入用户的点,但是如果有机会的话,在场景中总共注入600个用户

它也会在某种程度上自然地上升和下降,尽管如果需要,你可以通过链接注射步骤来更明确地控制增加,例如:

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)
)