Jmeter之定時器


一、 定時器的作用域

1. 定時器是在每個sampler(采樣器)之前執行的,而不是之后(無論定時器位置在sampler之前還是下面);
2. 當執行一個sampler之前時,所有當前作用域內的定時器都會被執行;
3. 如果希望定時器僅應用於其中一個sampler,則把定時器作為子節點加入;
4. 如果希望在sampler執行完之后再等待,則可以使用Test Action;
 

二、 定時器的作用

1. 固定定時器(Constant Timer)
 

如果你需要讓每個線程在請求之前按相同的指定時間停頓,那么可以使用這個定時器;需要注意的是,固定定時器的延時不會計入單個sampler的響應時間,但會計入事務控制器的時間。

對於“java請求”這個sampler來說,定時器相當於loadrunner中的pacing(兩次迭代之間的間隔時間);
對於“事務控制器”來說,定時器相當於loadrunner中的think time(思考時間:實際操作中,模擬真實用戶在操作過程中的等待時間)。

我們通常說的響應時間,應該大部分情況下是針對某一個具體的sampler(http請求),而不是針對一組sampler組合的事務 。
 

2. 常數吞吐量定時器(Constant Throughput Timer)
 

可以讓JMeter以指定數字的吞吐量(即指定TPS,只是這里要求指定每分鍾的執行數,而不是每秒)執行。

吞吐量計算的范圍可以為指定為當前線程、當前線程組、所有線程組等范圍,並且計算吞吐量的依據可以是最近一次線程的執行時延。這種定時器在特定的場景下,還是很有用的。
 

3. 同步定時器(Synchronizing Timer)
 

PS:超時時間為0時,默認無超時限制。
 
這個定時器和loadrunner當中的集合點(rendezvous point)作用相似,其作用是:阻塞線程,直到指定的線程數量到達后,再一起釋放,可以瞬間產生很大的壓力。

(1)Number of Simulated Users to Group by:模擬用戶的數量,即指定同時釋放的線程數數量
(2)Timeout in milliseconds:超時時間,即超時多少毫秒后同時釋放指定的線程數
 

三、 思考:超時時間一般情況設置多大?

首先,要清楚為什么要設置這個超時時間?

1、實際運行過程中,可能出現始終無法達到集合點設置的並發要求;如果出現這種情況的話Jmeter會一直卡頓在那里,等待滿足要求,才會繼續往下執行;
2、為了避免上述情況的發生,我們需要設置一下集合點的超時時間
  設置規則為:因為集合點超時時間的單位為ms
  計算公式:超時時間 > 請求集合數量 * 1000 / (線程數 / 線程加載時間)
  
   
性能測試中我們經常提到一個概念就是“並發”,其實在實際真實的性能測試中是不存在真正的並發的。為了更真實的模擬對一個請求的並發測試場景,我們通常設置一個集合點,JMeter中提供了這樣的一個功能設置。
 

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

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

 
解決辦法是:設置同步定時器的超時時間。
同步定時器(Synchronizing Timer)的超時時間設置要求:
超時時間 > 請求集合數量 * 1000 / (線程數 / 線程加載時間)


免責聲明!

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



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