如何在加特林中设置减速时间?
Posted
技术标签:
【中文标题】如何在加特林中设置减速时间?【英文标题】:How to setup ramp down time in gatling? 【发布时间】:2019-05-29 22:20:03 【问题描述】:我有一个 jmeter 脚本,可以在 20 分钟内增加 20 个用户(每分钟 1 个用户)并保持 30 分钟并每分钟减少 1 个用户。
我如何在 Gatling 中实现这一点?
我在 gatling 中尝试了以下设置,
SAAPIBase.scn_SA_Auth.inject(rampUsers(20) during (20 minutes)).protocols(httpConf)
).maxDuration(50 minutes)
这会增加 20 个用户 20 分钟,并在 20 个用户的情况下保持 30 分钟。但在那之后它突然下降到零。
如何每分钟慢慢减少 1 个用户?
【问题讨论】:
【参考方案1】:请注意,您的模拟运行时间会受到您正在运行的场景的严重影响 - 所有加特林 DSL 注入步骤控制何时用户开始,仅此而已。因此,如果您的场景运行时间很长或无法预测,则很难保证与您指定的完全一样。
在你的例子中
.inject(rampUsers(20) during (20 minutes)).protocols(httpConf)
).maxDuration(50 minutes)
您在 20 分钟内均匀地注入 20 个用户(所以每分钟一个)。如果这确实在斜坡后保持了 30 分钟,那么您的场景可能正在循环,并且用户被 maxDuration 语句停止。
对于减速,您可以将注射更改为
.inject(
rampConcurrentUsers(1) to(20) during(20 minutes),
constantConcurrentUsers(20) during (30 minutes),
rampConcurrentUsers(20) to(1) during(20 minutes)
)
这将使您在 20 分钟内保持相同的加速,然后在其他人完成时继续注入用户,以在接下来的 30 分钟内维持 20 个并发用户,然后在最后 20 分钟内逐渐减慢注入速度。但是,如果您的场景使用 .forever 之类的循环来保持运行,则此减速将不起作用,因为在第一个命令中注入的用户将永远不会停止。
【讨论】:
嗨詹姆斯,谢谢这对我有帮助。但作为一个后续问题。我需要在开始前引入延迟时间。我正在做如下 - scn_x.inject( nothingFor(5 seconds), rampConcurrentUsers(1) to (3) during(12 minutes), constantConcurrentUsers(3) during (30 minutes), rampConcurrentUsers(3) to (1) during( 12 分钟)).protocols(OWSAPIBase.httpConf_prod)。但我收到错误消息“没有为参数evidence$1:InjectionProfileFactory[product with serialable]找到隐含的] 那应该工作..你能发布确切的代码sn-p吗? 我尝试了以下方法,但我看到的只是用户注入或加速,没有任何减速。我确保没有可能阻止用户停止的永远或循环。 setUp(scenario.inject(rampConcurrentUsers(1) to (10) during (1 minute),sInjection(10000): _* ).protocols(httpconf) def sInjection(repeats : Int) = var seq = Seq[ClosedInjectionStep](rampConcurrentUsers(10) to (1) during (1 minute)) var i = 重复 while (i > 0) seq = seq ++ Seq(rampConcurrentUsers(1) to (10) during (1 minute)) seq = seq ++ Seq(rampConcurrentUsers(10) to (1) during (1 minute)) seq = seq ++ Seq(constantConcurrentUsers (1) 在 (1 分钟)) i -= 1 seq Gatling 不会因为注入配置文件的更改而杀死用户 - 他们只是控制何时启动新用户。因此,当您指定rampConcurrentUsers (10) to (1) during (1 minute)
时,gatling 将启动 10 个用户,然后尝试逐渐注入新用户以将并发用户保持在 10 个,然后是 9 个,依此类推...因此,如果您的场景花费超过一分钟,您将永远不会看到下降.以上是关于如何在加特林中设置减速时间?的主要内容,如果未能解决你的问题,请参考以下文章