【发布时间】:2017-03-17 04:10:49
【问题描述】:
我需要编写模拟真实用户交互的 Gatling 场景。它应该偶尔发出一些请求,例如每个用户每小时 10 个(总共 20 个用户)。
根据我在文档中看到的内容,constantUsersPerSec 接受双精度,但它是四舍五入的,而 reachRps 在限制中仅处理秒数。所以,不能低于 1 rps。
是否可以使用 Gatling 编写这样的场景?
【问题讨论】:
我需要编写模拟真实用户交互的 Gatling 场景。它应该偶尔发出一些请求,例如每个用户每小时 10 个(总共 20 个用户)。
根据我在文档中看到的内容,constantUsersPerSec 接受双精度,但它是四舍五入的,而 reachRps 在限制中仅处理秒数。所以,不能低于 1 rps。
是否可以使用 Gatling 编写这样的场景?
【问题讨论】:
所以你的场景看起来像“2 小时,每 6 分钟发送一次请求”或“在 2 小时内以每小时 10 个用户的恒定速率......”。
constantUsersPerSec 在内部舍入为 int 乘以持续时间的秒数。所以应该根据速率选择持续时间,使结果大于1。
在你的情况下,
def perHour(rate : Double): Double = rate / 3600
constantUsersPerSec(perHour(10)) during(2 hours)
这会导致
10/3600 个用户 * (2 * 60 * 60) 秒 = 20 个用户
通过注入步骤
setUp(
scn.inject(
atOnceUsers(1),
nothingFor(6 minutes),
atOnceUsers(1),
nothingFor(6 minutes),
//... and so forth...
)
)
或在第二种方法中生成注入步骤
def injections(): List[InjectionStep] = List(...)
setUp(scn.inject(injections : _*))
【讨论】: