【问题标题】:How to inject a constant number of users in Gatling?如何在 Gatling 中注入恒定数量的用户?
【发布时间】:2020-01-02 13:48:02
【问题描述】:

我不清楚如何在 Gatling 中控制封闭的工作负载模型。

如果我使用constantConcurrentUsers,像这样:

myScenario.inject(
    constantConcurrentUsers(40) during (2 minutes)
)

我认为这意味着活跃用户的数量将保持不变。但相反,我收到这样的报告:

用户数量不是恒定的,是我想要的数量的 3-5 倍。

虽然在控制台输出中,我可以看到 something 是恒定的(这里有 4 个场景,每个加载了 10 个恒定的并发用户):

但总负载比我预期的要多得多。

我曾尝试过节流,结果很明显。在我的理解中,油门使并发活动请求的数量最大化(如果请求已发送但尚未响应,则该请求处于活动状态)。我定义了一些应该通过的请求,并且每次完成一个请求时,Gatling 都会发送一个新请求。由于响应时间没有太大差异,因此报告如下所示:

我想做同样的事情,但我可以控制模拟的长度,而不是发送的请求总数。 constantConcurrentUsers 似乎正是我需要的东西,但它产生了意想不到的结果。我的油门模拟在大约 1 分钟内完成了大约 3000 个请求,油门为 50。同时,如果我将 50 个并发用户设置为 1 分钟,则报告中发送的请求超过 7000 个。油门箱的响应时间要短得多。所以油门模拟发送请求比并发用户模拟慢得多,但不是因为请求需要更多时间。

我知道活动用户和发送的请求不一样,constantConcurrentUsers 控制用户数量,而节流控制请求。但是我所有的场景都只包含一个请求,所以我不明白结果之间的区别。

所以我的问题是:

  • 当我使用constantConcurrentUsers 时,究竟什么是常量?
  • 我使用constantConcurrentUsers时的请求数是如何计算的?
  • 报告中的“活跃用户”与控制台输出中的“活跃”之间有什么关系?

我已阅读 Gatling 文档的this part,该文档非常短且缺乏详细说明。我还阅读了this article,其中包含我在任何 Gatling 报告中从未见过的图表,也没有回答我的问题。

感谢您的任何贡献。

【问题讨论】:

    标签: performance-testing gatling


    【解决方案1】:

    我发现Cheatsheet 最准确地描述了每个注射步骤。如何注入恒定数量的用户应该使用 constantConcurrentUsers,它在 Cheatsheet 中被描述为:“保持恒定数量的并发用户”

    至于你的其他问题:

    • 当我使用 constantConcurrentUsers 时,究竟什么是常量?

    我相信 Gatling 确实会保持并发用户数量不变。请求数量激增的原因是一个用户可以在给定的时间跨度内发出多个请求。一旦用户的当前请求完成,同一用户就会触发一个新请求。在您的示例中,您有 40 个users,而您的number of requests 看起来大约为 80,这表明每个用户每秒完成 2 个请求(平均响应时间约为 500 毫秒?)

    • 使用 constantConcurrentUsers 时的请求数如何计算?

    如上所述,您的并发用户只会在您设置的持续时间内继续循环请求,并且在当前请求提供响应之前不会触发另一个请求。如果您的 API 很快,您每秒的请求数将高于您的用户数。

    • 报告中的“活跃用户”与控制台输出中的“活跃用户”有什么关系?

    这实际上是我有点不确定的地方:/ 我在测试中设置了 10 个 constantConcurrentUsers,控制台显示与您的类似,但我的报告显示随着时间的推移有 10-75 个活跃用户

    但是,Gatling 文档中的这个 Reports 页面提供了一些启示:

    “活跃用户”既不是“并发用户”也不是“用户到达率”。 它是一种混合度量,既适用于开放式,也适用于封闭式 工作负载模型,它代表“在 系统在给定秒内处于负载状态”。

    计算如下:

    (前一秒的活跃用户数) +(在这一秒内启动的用户数) - (前一秒终止的用户数)

    【讨论】:

    • 您好,谢谢您的回答。是的,最终我了解到 constantConcurrentUsers 注入 x 个用户,每当一个用户完成时,立即注入一个新用户。这就是此方法生成的负载取决于响应时间的原因。
    猜你喜欢
    • 2020-10-29
    • 2019-02-07
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-04
    相关资源
    最近更新 更多