如何在加特林中设置减速时间?

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 个,依此类推...因此,如果您的场景花费超过一分钟,您将永远不会看到下降.

以上是关于如何在加特林中设置减速时间?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 EMR 上设置减速器的数量

如何在 Hadoop 流中设置每个节点的最大减速器数量?

如何以编程方式防止 Windows 硬盘驱动器减速?

转移和占用操作主机

ReactJS:如何在 Jest 中通过动作触发减速器

如何使物体在指定位置寻找并减速停止?