Jmeter系列(7)- 基礎線程組Thread Group


如果你想從頭學習Jmeter,可以看看這個系列的文章哦

htTPS://www.cnblogs.com/poloyy/category/1746599.html

 

Thread Group基礎線程組介紹

 

Thread Group的簡單理解

  • 線程組是一個測試計划的開始點
  • 在一個測試計划中的所有元件都必須在某個線程組下
  • 線程組決定 Jmeter 執行測試計划的線程數

 

Thread Group提供的主要作用

  • 設置線程數
  • 設置ramp-up period
  • 設置執行測試的次數

 

Thread Group的獨立性

每個線程都會獨立的運行測試計划,互不干擾,多個線程用於模仿對服務器的並發訪問。

 

Thread Group線程屬性講解

 

在取樣器錯誤后要執行的動作

默認:繼續

建議:繼續

假設一個HTTP Sampler報錯了,后面還有其他請求,最好肯定是繼續執行下去啦

 

線程屬性值

設置的線程屬性值是【預期壓力值】

而聚合報告是【壓力測試的實際結果】

 

線程數

  • Jmeter java進程下啟動的線程,用來模擬真實用戶數,1線程數 = 1用戶數
  • windows下,2g的 java內存,1m 的棧空間,最大啟動線程數=1000
  • Linux下,2g的 java內存,1m 的棧空間,最大啟動線程數=2000
  • 在Jmeter中,先啟動線程,再運行線程,后釋放線程【啟動線程並運行,釋放線程】
  • 線程數建議不超過1000

 

Ramp-Up時間(秒)

  • 預期線程組的所有線程從啟動-運行-釋放的總時間
  • ramp up=0時,表示瞬時加壓,啟動線程的時間無限趨近於0
  • 特別注意:在負載測試的時候,盡量把ramp up設置大一些,讓性能曲線平緩,容易找到瓶頸點

 

循環次數

  • 每個線程循環執行的次數,默認一次【便於理解:線程的迭代次數、重復發起請求的次數】
  • 如果設置為永遠,那么 jmeter 將以最大的可能去發送請求,以此測試出最大並發數

 

線程屬性值的簡單栗子

上圖:10s 內啟動並運行 10 個線程,一共啟動 10 個線程,總共發送 20 個請求(10*2),每秒啟動一個線程,然后運行兩次

備注:如果 ramp-up 時間內,所有線程不能啟動運行完的話,時間則會順延下去

 

Ramp-up 設置注意事項

Ramp-up需要設置足夠長的時間來避免在測試剛開始時工作量過大

  • 假如需要大量線程的話,不建議設置成0,0 屬於瞬時加壓【過小的 ramp-up period 】
  • 如果設置 0,Jmeter 將在測試開始時就啟動全部線程並立即發送請求,這樣很容易讓服務器達到飽滿狀態,且瞬間會增加很大的負載量,容易讓服務器超載,這樣是不合理的;
  • 不合理的原因並不是因為平均壓力值過高,而是因為所有線程都在初始狀態時一起並發訪問,從而引起不正常的初始訪問峰值,可以通過 Jmeter 的聚合報告看到這種情況

 

Ramp-up還必須足夠短,保證最后一個線程在第一個線程完成之前開始運行

  • 如果 Ramp-up 過大,則會降低訪問峰值的負載,即沒有達到預期的壓力峰值,無法獲取准確的服務器最大負載情況【過大的 ramp-up period 】
  • 具體的表現為:一些線程還沒有啟動,初期啟動的部分線程已經結束了【導致實際並發量並會小於預期並發量】

 

如何確定一個合理的ramp-up period

  • 首先,讓初始點擊率接近平均點擊率,前提是確定合理的訪問量
  • 初始的 ramp-up period = 平均點擊率= 總線程/點擊率;假如線程數=100,點擊率=10次/s,則ramp-up period = 100/10 = 10s

 

延遲創建線程直到需要

延遲創建線程,直到線程被需要、采樣器開始執行時才會被創建,避免資源浪費

 

官方英文

When selected, JMeter will allocate threads according to the ramp up times. Otherwise all threads are allocated to the JVM process the moment the test is started, regardless of ramp up time.

 

譯文

選中后,JMeter將根據 Ramp-up 時間來分配線程。 否則,無論 Ramp-up 時間如何設定,所有線程都將在測試開始時分配給JVM進程。

 

調度器Specify Thread Lifetime【scheduler

調度器的作用:控制每個線程組運行的持續時間以及它在多少秒后再啟動

Duration (seconds) :持續時間;線程組運行的持續時間

Startup Delay (seconds):啟動延遲;測試計划開始后,線程組的線程將在多少秒后再啟動運行

 

調度器和循環次數的關系

  • 循環次數有固定值且 ≠ -1,持續時間不會生效,以循環次數為准
  • 循環次數設置為永遠或 -1 時,持續時間才會生效

 

調度器注意事項

當線程組運行完持續時間后,會逐步釋放線程,不會一下子把所有線程釋放掉,而釋放線程也是需要時間的~

所以測試計划總的時間(右上角的時間)會 > 持續時間+啟動延遲

 

預習TPS

  • 總的完成請求數 = 線程總數 * 循環次數
  • 平均TPS = 總請求數 / 線程運行總時間【上圖,右黃色三角形的時間】
  • 平均TPS(即聚合報告的TPS)是僅供參考的
  • 實際的TPS是由服務器決定的,因為它是衡量服務器處理能力的性能指標 

 


免責聲明!

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



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