2016-08-02 70 views
0

加特林世界的新手,但经验丰富的Loadrunner用户。 我创建了一个示例模拟来运行两个场景,每个场景都有10个用户,并且要运行10分钟。以下是我在我的设置功能。但每次运行模拟时,它只运行136秒。 holdFor似乎没有生效。加特林油门不工作

setUp(
    scn.inject(rampUsers(10) over (10 seconds)), 
    scen.inject(rampUsers(10) over (10 seconds)) 
) 
.protocols(httpProtocol) 
.throttle(
    reachRps(2) in (10 seconds), 
    holdFor(10 minutes) 
) 

我正在使用Gatling 2.2.2包。

输出:Simulation computerdatabase.BasicSimulation completed in 136 seconds

+0

澄清136秒才能执行这些10次+ 10次的用户触发的所有请求的一次迭代的大致时间。 – CyberNinja

回答

4

节流工作的瓶颈,作为上边界有效地工作了多少个请求将被发送。如果你的方案+注射配置文件无法在第一时间产生尽可能多的请求,那么所产生的请求不受阻碍地通过节流阀。油门不能增加负载来匹配所需的RPS,它只能减少负载。

您需要将足够的用户注入您的场景中,以便他们能够首先生成您想要的2个RPS,并在模拟过程中不断添加更多的RPS,以便油门达到做你正在寻找的东西。

试着改变你的注入剖面,以例如这样的事情(并根据需要调整constantUsersPerSec值),我相信这可能会给你一个负载轮廓更接近了一步你正在寻找:

scn.inject(constantUsersPerSec(1) during(10 minutes))), 
scen.inject(constantUsersPerSec(1) during (10 minutes))) 

上面的例子只是一个非常快速和肮脏的方式来说明其随时间注入用户的点,但凑巧,注入600个用户总数超过10分钟时的情景 10用户每十秒钟一次,应该正是你想要的,除非我正在下降屁股fi首先是基本的算术错误和/或误解。

它也自然会上升和下降在一定程度上,虽然可以更明确地控制斜坡上升链注入步骤,如果你需要,例如像这样:

scn.inject(
    rampUsers(10) over (1 minute), 
    constantUsersPerSecond(1) during (10 minutes) 
) 

对于另一种方法更明确控制随时间变化的斜坡,你也可以玩弄这样的配置:

scn.inject(
    splitUsers(600) into(rampUsers(10) over(10 seconds)) separatedBy(10 seconds) 
) 
+0

谢谢。我误解了节流的用法。我认为你的代码将总共注入大约600个用户(每个用户每秒10分钟2个场景)。这不是我想要的。我的目标是在20秒内加载20个用户进行测试,然后让这20个用户运行10分钟,然后缓慢下降 – CyberNinja

+0

最初发表评论的回复,但时间变长。相反,更新上面的答案。 –

+0

这个答案帮助我理解了这个问题,因此将这个问题标记为答案。 – CyberNinja