2016-08-02 49 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