timer-同步定時器(Synchronizing Timer)


模擬並發。

設置一個閾值(請求數量),當請求數達到這個閾值時,允許請求同時發出。例如:想測試一座橋的並發(忽略載重等其他因素,只考慮通過),那么並發的請求就是類似於多少輛車可同時通過橋,而車輛一般情況下是不可能同時通過橋的,因而我們可以在橋頭A,設置一個集合點,等車輛數滿足一定的數量,同時讓車輛通過此橋。

步驟:

1. 添加同步定時器

 Add --> Timer --> Synchronizing Timer

 2. 配置同步定時器

a)Number of Simulated Users to Group by:請求集合數量(模擬用戶的數量,即指定同時釋放的線程數數量)

 b)Timeout in milliseconds:超時時間(超時多少毫秒后同時釋放指定的線程)

  當線程數=集合數量時,集合好了就全部釋放,不用等超時時間

  當線程數<集合數量時,設置10000毫秒(即10s),意思是從點擊start開始,等待10s后同時釋放,釋放數量n(線程數)個

  當線程數>集合數量時,集合好了就釋放n(集合數量)個,然后再過10s釋放m(線程數-集合數)個,也就是剩余的

 PS:超時時間設置場景:實際運行過程中,可能出現請求數當不滿足集合點設置的請求數時(未設置超時時間),JMeter一直卡頓在如下頁面:

解決方案是設置同步定時器的超時時間:

 超時時間 > 請求集合數量 * 1000 / (線程數 / 線程啟動加載時間)

 下面以三個sampler為例:

場景一:設置定時器與不設置定時器區別

線程數設置為10,集合點為10,超時為1000,點擊運行

 關閉定時器,發送前期都是零零散散的

 場景二:定時器位置是否影響結果

 定時器移動到sampler1,結果與3.1一樣,如下圖所示,所以,不管移動到什么位置,發現只要在該線程組下,都是作用於該線程組下所有請求線程

場景三:移動到子節點下面是什么情況呢,從下面的數據發現是作用於該父類節點的sampler

 定時器僅僅對sampler1起作用,即僅在sampler1執行前執行定時器,和sampler2及sampler3無關

注意點:集合點的位置一定要在Sample(采樣器)之前才能生效嗎???”

在Jmeter中,timer是在sampler之前執行的。不管這個定時器的位置放在sampler之后,還是之前。當然,如果有多個timer的時候,在相同作用域下,會按上下順序執行timer,這個就需要慎重放置timer的順序;不過,為了更好的可讀性,還是建議將timer放在對應的sampler前面 或 子節點中


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM