關於JMeter線程組中線程數,Ramp-Up Period,循環次數之間的設置概念
筆者是個剛剛踏入壓力測試領域不到2個月的小菜,這里分享一下線程組中3個參數之間關系的個人見解,不喜請!噴!,望大家給出寶貴的想法。
假設:
線程數:n
Ramp-Up Period:T (有人稱之為啟動時間,有人說是准備時長,看個人喜好)
循環次數:a
若每個循環運行時間是 t
當時間到 S = (T- T/n)時,最后一個線程啟動,若要使所有線程同時運作,則需要在最后一個線程啟動的時候第一個線程仍未關閉,為達到這個要求,需滿足 a·t > S及a > S/t
每一個個線程運行時間既是R = a·t(此處的a是大於S/t的某一值),則第一個線程在時間點為R 的時候停止,整個測試理論運行時間則是 :S + R = (1-1/n)·T + a·t
總結:
測試中變量是 線程數 n ,每個循環時間 t 是個實踐值,循環次數 a 只是為了延長單個線程的運行時間,從而保證當最后一個線程啟動時,所有線程都在運行中,達到壓測效果。
以上是我個人的總結,額,什么?看不懂!其實筆者寫完了也暈了,下面我們用確切的數值進行試驗
我們設置線程數 n = 5,循環次數a = 1000,請求www.google.com,得到聚合報告如圖:
圖中得到谷歌首頁的平均請求時間大約為t = 0.2秒
這里,我們為了方便分析,將Ramp-Up Period 設置為T = 10秒(實際合理的時間后面會說明)
依然是n = 5,得到 S = (T- T/n) = 8 ,也就是說,從第一個線程啟動到第8秒的時候,最后一個線程開始啟動,若需要在最后一個線程啟動的時候第一個線程仍未關閉,則需要滿足 a·t > S ,已知S = 8,t = 0.2,得到 a > 40 。
OK,既然循環次數要大於40,我們不妨把循環設置成100,那么單個線程運行時間就是R = a·t = 20秒,也就是說第一個線程會在第20秒的時候停止,整個測試的理論運行時間為 S + R = (1-1/n)·T + a·t = 28秒
我們用一張圖來直觀的看看每個線程的運行情況
從圖中可以得到從第8秒開始,到第20秒,5個線程同時在運行中,此時才是真正的模擬5個用戶同時並發
說了這么多,我們的目的到底是什么?無非是如何設置線程數,Ramp-Up Period以及循環次數。線程數我就不多說了,看各個項目的測試需求,而剛剛我說了這么多,實質上只是介紹了一些概念和如何合理的設置循環次數,至於Ramp-Up Period如何合理這是,請看下面大神的分析。
作為菜鳥,筆者以菜鳥的文筆和想法污染的大家的大腦,請見諒,還是那句話,不喜請!噴!
以下資料引用:http://www.knowsky.com/367353.html
每個線程均獨立運行測試計划。因此, 線程組常用來模擬並發用戶訪問。假如客戶機沒有足夠的能力來模擬較重的負載,可以使用Jmeter的分布式測試功能來通過一個Jmeter控制台來遠程控制多個Jmeter引擎完成測試。
參數 ramp-up period 用於告知JMeter 要在多長時間內建立全部的線程。默認值是0。假如未指定ramp-up period ,也就是說ramp-up period 為零, JMeter 將立即建立所有線程,假設ramp-up period 設置成T 秒, 全部線程數設置成N個, JMeter 將每隔T/N秒建立一個線程。
線程組的大部分參數是不言自明的,只有ramp-up period有些難以理解, 因為如何設置適當的值並不輕易。 首先,假如要使用大量線程的話,ramp-up period 一般不要設置成零。 因為假如設置成零,Jmeter將會在測試的開始就建立全部線程並立即發送訪問請求, 這樣一來就很輕易使服務器飽和,更重要的是會隱性地增加了負載,這就意味着服務器將可能過載,不是因為平均訪問率高而是因為所有線程的第一次並發訪問而引起的不正常的初始訪問峰值,可以通過Jmeter的聚合報告監聽器看到這種現象。
這種異常不是我們需要的,因此,確定一個合理的ramp-up period 的規則就是讓初始點擊率接近平均點擊率。當然,也許需要運行一些測試來確定合理訪問量。
基於同樣的原因,過大的ramp-up period 也是不恰當的,因為將會降低訪問峰值的負載,換句話說,在一些線程還未啟動時,初期啟動的部分線程可能已經結束了。
那么,如何檢驗ramp-up period I太小了或者太大了呢?首先,推測一下平均點擊率並用總線程除點擊率來計算初始的ramp-up period。 例如,假設線程數為100, 估計的點擊率為每秒10次, 那么估計的理想ramp-up period 就是 100/10 = 10 秒。 那么,應怎樣來提出一個合理的估算點擊率呢?沒有什么好辦法,必須通過運行一次測試腳本來獲得。
其次, 在測試計划(test plan)中增加一個聚合報告監聽器,如圖2所示,其中包含了所有獨立的訪問請求(一個samplers)的平均點擊率。 第一次取樣的點擊率(如http請求)與ramp-up period 和線程數量密切相關。通過調整ramp-up period 可以使首次取樣的點擊率接近平均取樣的點擊率。
第三, 查驗一下Jmeter日志(文件位置:JMeter_Home_Directory/bin) 的最后一個線程開始時第一個線程是否真正結束了,二者的時間差是否正常。
總之,是否能確定一個適當的ramp-up time 取決於以下兩條規則:
·第一個取樣器的點擊率(hit rate)是否接近其他取樣器的平均值,從而能否避免ramp-up period 過小。
·在最后一個線程啟動時,第一個線程是否在真正結束了,最好二者的時間要盡可能的長,以避免ramp-up period過大。
有時,這兩條規則的結論會互相沖突。 這就意味着無法找到同時滿足兩條規則的合適的ramp-up period。 糟糕的測試計划通常會導致這些問題,這是因為在這樣的測試計划里,取樣器將不能充分地采集數據,可能因為測試計划執行時間太短並且線程會很快的運行結束。
---------------------
作者:hsd412237463
來源:CSDN
原文:https://blog.csdn.net/hsd412237463/article/details/49929173
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!