加特林:随时保持固定数量的用户/请求

时间:2019-04-27 21:43:18

标签: gatling scala-gatling

对于一个场景,我们如何才能同时保持固定数量的活动并发用户/请求。

我有一个独特的测试问题,我需要在给定的时间段(例如10分钟或30分钟或1小时)内,在给定的时刻对具有固定请求数的服务进行性能测试。

我不是在寻找第二件事,我正在寻找的是我们从N个请求开始,并且随着N个请求中的任何一个请求完成,我们又增加了一个,因此在任何给定时刻,我们都有N个并发仅请求。

我尝试过的事情是rampUsers(100) over 10 seconds,但我发现有时在给定实例中有50个以上的用户。

constantUsersPerSec(20) during (1 minute)在一段时间内也将请求数量从0变为50。

atOnceUsers(20)似乎相关,但是我看不到任何方法可以让它在给定的秒数内运行并在先前的请求完成后添加更多请求。

提前感谢您的社区,期待您的指导。

2 个答案:

答案 0 :(得分:1)

使用Gatling 3.0支持的封闭工作量模型注入。对于您的情况,要在一分钟内模拟和维护20个活跃用户/请求,可以使用类似的注入方式

Script.<Controller>.<Scenario>.inject(constantConcurrentUsers(20) during (60 seconds))

答案 1 :(得分:0)

有一个限制机制(https://gatling.io/docs/3.0/general/simulation_setup/#throttling),它可以让您设置最大请求数,但是您必须记住,独立于模拟将用户注入到模拟中,并且必须注入足够的用户以产生最大数量的请求。请求,否则,您的请求/秒将降低。同样,将被注入但由于节流而无法发送请求的用户将排队等待他们转向。在油门刚结束后可能会导致巨大的负载,或者可能会扩展您的模拟,因此将油门时间长于注入时间并在模拟设置中添加maxDuration()选项总是更好的选择。

您还应该记住,节流模拟与用户行为的自然方式相差甚远。他们从不等待其他用户在打开页面或执行任何操作之前完成操作,因此在现实生活中,您总是以每秒可变数量的请求告终。