如何在加特林注入一定数量的用户?

问题描述 投票:2回答:1

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

如果我使用constantConcurrentUsers,例如:

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

我以为,这意味着活跃用户的数量将是恒定的。但是,相反,我得到这样的报告:

40 constant concurrent users?

其中用户数量不是恒定的,并且比我想要的多3-5倍。

不过在控制台输出中,我可以看到something是恒定的(这里有4个场景,每个场景都装有10个恒定的并发用户):

Console output of 40 constant concurrent users

但是总负载远远超出我的预期。

我已经进行了节流实验,结果在那里很明显。在我的理解中,节流阀使并发活动请求的数量最大化(如果请求已发送但尚未响应,则该活动为活动的)。我定义了一些应该处理的请求,Gatling每次完成一个请求都会发送一个新请求。由于响应时间之间没有太大差异,因此报告如下所示:

Constant number of sent requests with throttle

我想做同样的事情,但是这样我可以控制仿真的时间,而不是发送的请求总数。 constantConcurrentUsers似乎只是我需要的东西,但它会产生意外的结果。我的油门模拟在大约1分钟内以50的油门执行了大约3000个请求。同时,如果我将50个并发用户设置为1分钟,则报告中将发送7000个以上的请求。在油门情况下,响应时间要低得多。因此,节流模拟发送请求要比并发用户模拟慢得多,但这不是因为请求花费更多时间。

我知道活动用户和发送的请求不同,constantConcurrentUsers控制用户数,而节流控制请求。但是我所有的方案都只包含一个请求,所以我不了解结果之间的区别。

所以我的问题是:

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

我已经阅读了加特林文档的this part,该文档确实很短,并且缺少详细说明。我还阅读了this article,其中包含我在任何加特林报告中从未见过的图表,并且无法回答我的问题。

谢谢您的贡献。

performance-testing gatling
1个回答
1
投票

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

关于您的其他问题:

  • 当我使用constantConcurrentUsers时,什么是常数?

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

  • 当我使用constantConcurrentUsers时,如何计算请求数?

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

  • 报告中的“活动用户”与控制台输出中的“活动”之间是什么关系?

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

但是,加特林文档中的此Reports页面提供了一些启示:

“活动用户”既不是“并发用户”也不是“用户到达率”。这是一种混合指标,适用于开放式和封闭式工作负载模型,代表“活跃于系统在给定的每秒负载下。”

计算为:

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

© www.soinside.com 2019 - 2024. All rights reserved.