【问题标题】:How to achieve constant concurrent active users in closed model using Gatling?如何使用 Gatling 在封闭模型中实现恒定并发活跃用户?
【发布时间】:2020-10-29 15:00:42
【问题描述】:

我的问题在某种程度上与 thisthis 相关,但不知何故并没有真正回答我的问题。

我的测试用例非常简单,我需要在一段时间内(例如 60 秒)不断生成持续活跃的并发用户(例如 10 个并发用户)。

我的代码是这样的

val TestProtocolBuilder: HttpProtocolBuilder = http.baseUrl("https://computer-database.gatling.io")
object Test {

  val test =
    exec(http("Test_Only")
      .get("/computers")
      .check(status.in(200, 404))
    )
}

val TestOnly = scenario("Test Only").exec(Test.test)

setUp(
  TestOnly.inject(
    constantConcurrentUsers(10) during(60 seconds)
  ).protocols(TestProtocolBuilder)
)

这个documentationconstantConcurrentUsers(nbUsers) during(duration) : 注入使得系统中的并发用户数恒定

我希望有 10 个并发活跃用户在 60 秒内不断访问 API。不超过 10 个用户,并且任何时候不低于 10 个用户。

我在 HTML 报告中看到的是,任何给定时间的活跃用户都远高于 10(几乎翻了一番)。

documentation 学习,它说

此图表显示模拟期间的活跃用户:总数和每个场景。 “活跃用户”既不是“并发用户”也不是“用户到达率”。它是一种混合指标,适用于开放式和封闭式工作负载模型,代表“在给定秒数负载下活跃在系统上的用户”。

计算如下: (前一秒的活跃用户数) + (这一秒内启动的用户数) - (前一秒内终止的用户数)

问题:

  1. 为什么 Gatling 在测试期间不断终止用户并启动新用户?有什么意义?
  2. 如果constantConcurrentUsers(10) during(60 seconds) 给我一个更高的活跃用户并在测试期间保持波动,我如何才能在测试期间获得恒定的 10 个并发活跃用户(不多也不少)继续访问我的 API?我需要坚持我的测试用例,而不是过度加载 API。
  3. 在上图中,在给定时间the number of request = 7the active users = 20。这是否意味着在给定时间,有 7 个活跃用户发出请求,并且有 20 - 7 = 13 个活跃用户闲置等待从 API 返回的响应?

谢谢。

【问题讨论】:

    标签: performance-testing gatling scala-gatling


    【解决方案1】:

    为什么 Gatling 在测试期间不断终止用户并启动新用户?有什么意义?

    虚拟用户的生命周期取决于您的场景。 注入配置文件仅在注入/启动时驱动。 如果您想让您的用户在一个请求后不终止,请在您的场景中添加一个循环。

    如何获得恒定的 10 个并发活跃用户

    无稽之谈。正如你引用自己并发的!= 活跃的。我保证你有一个恒定数量的并发用户,这意味着同时有 10 个用户活着。问题是,由于您的场景只有 1 个请求,用户会立即终止并被新的请求替换。

    这是否意味着在给定时间,有 7 个活跃用户发出请求,并且有 20 - 7 = 13 个活跃用户闲置等待从 API 返回的响应?

    这意味着虚拟用户的生命周期在 2 秒之间重叠,因此他们在 2 个不同的秒桶中被看到。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-12
      • 2019-01-22
      • 1970-01-01
      • 2020-06-20
      • 2014-02-18
      • 1970-01-01
      相关资源
      最近更新 更多