Jmeter 定時器的設置(集合點、思考時間 的應用 20190730(10)


  • 為啥設置定時器

1.性能測試中,我們經常提到的一個概念‘並發’,其實在實際真實的性能測試中是不存在真正的並發的。為了更真實的模擬對一個請求的並發測試場景,我們通常采用設置‘集合點’達到這個效果:

模擬用戶並發時,設置集合點,為此可以加入同步定時器 Synchronizing Timer。

2.默認情況下,jmeter發送每個請求之間是沒有延時的,如果線程數足夠大,瞬間就會將服務器壓死:

多接口組成的場景用例,設置思考時間,為此可以加入其他類型的Timer (有固定的、有隨機的等)

  • 基本規則:定時器在每個sampler之前去執行

一、集合點的設置

 

  • Synchronizing Timer 同步定時器:阻塞線程,直到指定的線程數量到達后,再一起釋放,可以瞬間產生很大的壓力

參數說明:

Number of Simulated Users to Group   集合數量(要分組的模擬用戶數量),設置的值不大於它所在線程組包含的用戶數。如果設置為0,等同於設置為線程租中的線程數量。

Timeout in milliseconds  超時時間 : 如果大於0,比如5000時,等待5000(毫秒為單位)后,Timer不再等待,無論是否達到集合數量,都釋放已到達的線程。

              默認為0,一直等待,Timer一直等待線程數達到了集合數量才釋放,不到達則不釋放。

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

首先你要弄明白同步計時器的超時時間定義:若在超時時間內,性能測試並發場景設定的並發樣本數量未達到,則jmeter認為超時,會立即執行並發。
超時時間的設定值約束:超時時間 > 請求集合數量 * 1000 / (線程數 / 線程加載時間)

分母計算結果為:每秒啟動的線程數;
請求集合數量:為設定的性能測試場景的樣本並發數量;
不等式右邊計算結果為:加載性能並發樣本所需時間(毫秒)

綜上,同步定時器的超時時間建議設置為大於不等右邊。

參照:https://www.cnblogs.com/fengpingfan/p/5583594.html

注意點:

如果設置Timeout in milliseconds為0,且線程數量無法達到"Number of Simultaneous Users to Group by"中設置的值,那么Test將無限等待,除非手動終止。

Synchronizing timer 僅作用於同一個JVM中的線程,所以,如果使用並發測試,確保"Number of Simultaneous Users to Group by"中設置的值不大於它所在線程組包含的用戶數。

(原文:Synchronizing timer blocks only within one JVM, so if using Distributed testing ensure you never set "Number of Simultaneous Users to Group by" to a value superior to the number of users of its containing Thread group considering 1 injector only)

 

二、其他定時器,可用於設置思考時間

  • Constant Timer   固定定時器:每個線程在請求之前按相同的指定時間停頓
  • Gaussian Random Timer 高斯隨機定時器: 每個線程在請求前按隨機時間停頓
  • Uniform Random Timer 均勻隨機定時器:會暫停每個線程請求一個隨機時長,每個時間間隔都有同樣的出現幾率
  • Constant Throughput Timer 固定吞吐量定時器:可變暫停時長,通過計算來保證總吞吐量(每分鍾采樣數)盡可能接近指定的值,
  • BeanShell Timer: 用來產生延遲

固定定時器的延時不會計入單個sampler的響應時間,但會計入事務控制器的時間。

對於“java請求”來說,定時器相當於loadrunner中的pacing(兩次迭代之間的間隔時間);

對於“事務控制器”來說,定時器相當於loadrunner中的think time(思考時間:實際操作中,模擬真實用戶在操作過程中的等待時間)。

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

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

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

三、定時器的作用域

定時器對其作用范圍內的每一個sampler 有效

1、定時器是在每個sampler(采樣器)之前執行的,而不是之后(無論定時器位置在sampler之前還是下面);

2、當執行一個sampler之前時,所有當前作用域內的定時器都會被執行;

3、如果希望定時器僅應用於其中一個sampler,則把定時器作為子節點加入;

4、如果希望在sampler執行完之后再等待,則可以使用Test Action;

 參照:https://www.cnblogs.com/wxinyu/p/7687063.html  九種定時器的介紹

參照:https://www.jianshu.com/p/32a44efd8395

參照:http://www.mamicode.com/info-detail-2230433.html

參照:http://makaidong.com/licl11092/11682_689956.html

 

在添加元件后,可以按照這個順序調整元件的位置:配置元件(cookie \header管理器等)--》前置處理器--》定時器--》取樣器--》后置處理器--》斷言--》監聽器

===============================

 

實例 https://yq.aliyun.com/articles/708146?spm=a2c4e.11155472.0.0.4ad91c70YfClbo

簡單壓測---到場景編排---壓測執行

 

 


免責聲明!

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



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