【发布时间】: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