rampUser 方法卡在 gatling 3.3 中

Posted

技术标签:

【中文标题】rampUser 方法卡在 gatling 3.3 中【英文标题】:rampUser method is getting stuck in gatling 3.3 【发布时间】:2019-12-20 22:19:35 【问题描述】:

我在我的 gatling 脚本中使用 rampUser() 方法时遇到问题。在以下条目通过一半后,请求被卡住。

版本:3.3

================================================================================
2019-12-18 09:51:44                                          45s elapsed
---- Requests ------------------------------------------------------------------
> Global                                                   (OK=2      KO=0     )
> graphql / request_0                                      (OK=1      KO=0     )
> rest / request_0                                         (OK=1      KO=0     )

---- xxxSimulation ---------------------------------------------------
[#####################################                                     ] 50%
          waiting: 1      / active: 0      / done: 1     
================================================================================

我在日志中看到以下内容不断重复并且日志大小增加

09:35:46.495 [GatlingSystem-akka.actor.default-dispatcher-2] DEBUG io.gatling.core.controller.inject.open.OpenWorkload - Injecting 0 users in scenario xxSimulation, continue=true
09:35:47.494 [GatlingSystem-akka.actor.default-dispatcher-6] DEBUG io.gatling.core.controller.inject.open.OpenWorkload - Injecting 0 users in scenario xxSimulation, continue=true

上述问题仅发生在rampUser 上,而不发生在

atOnceUsers()
rampUsersPerSec()
rampConcurrentUsers()
constantConcurrentUsers()
constantUsersPerSec()
incrementUsersPerSec()

有没有办法以其他方式模仿rampUser(),或者有解决方案。 我的代码非常少

setUp(
    scenarioBuilder.inject(
      rampUsers(2).during(1 minutes)
    )
  ).protocols(protocolBuilder)

我被这个问题困扰了一段时间,我之前发布的更多信息可以在here找到。

有哪位加特林专家可以帮我解决这个问题吗?

感谢您的调查。

【问题讨论】:

【参考方案1】:

看来rampUsers 的语法略有错误。您应该尝试在during 之前删除.。 我在自己的脚本中有这段代码,它工作正常:

setUp(userScenario.inject(
    //  atOnceUsers(4),
        rampUsers(24) during (1 seconds))
    ).protocols(httpProtocol)

另外,在 Gatling 文档示例中也没有点 Open model:

  scn.inject(
    nothingFor(4 seconds), // 1
    atOnceUsers(10), // 2
    rampUsers(10) during (5 seconds), // HERE
    constantUsersPerSec(20) during (15 seconds), // 4
    constantUsersPerSec(20) during (15 seconds) randomized, // 5
    rampUsersPerSec(10) to 20 during (10 minutes), // 6
    rampUsersPerSec(10) to 20 during (10 minutes) randomized, // 7
    heavisideUsers(1000) during (20 seconds) // 8
  ).protocols(httpProtocol)
)

我的猜测是无法解析语法,因此替换为 0。 (这里是四舍五入的例子。不适用,但作为参考:gatling-user-injection-constantuserspersec)

另外,你提到其他方法可以工作,你能粘贴工作代码吗?

【讨论】:

以上是关于rampUser 方法卡在 gatling 3.3 中的主要内容,如果未能解决你的问题,请参考以下文章

Gatling入门简单使用

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

Gatling - 脚本中常用到的方法

Gatling - 用 session 实现关联 传递 token 值

如何使用 Gatling 遍历目录中的所有文件?

如何并行调用多个 API 进行负载测试(使用 Gatling)?