性能測試入門(四)JMeter之Ramp-up Period(in seconds)說明

 轉自:https://www.cnblogs.com/hjhsysu/p/9189897.html#4216900  html

 

總結:服務器

測試中變量是 線程數 n ,每一個循環時間 t 是個實踐值,循環次數 a 只是爲了延長單個線程的運行時間,從而保證當最後一個線程啓動時,全部線程都在運行中,達到壓測效果。併發

 

 

Ramp-up Period(in seconds)分佈式

【1】決定多長時間啓動全部線程。若是使用10個線程,ramp-up period是100秒,那麼JMeter用100秒使全部10個線程啓動並運行。每一個線程會在上一個線程啓動後10秒(100/10)啓動。Ramp-up須要要充足長以免在啓動測試時有一個太大的工做負載,而且要充足小以致於最後一個線程在第一個完成前啓動。  通常設置ramp-up=線程數啓動,並上下調整到所需的。測試

【2】用於告知JMeter 要在多長時間內創建所有的線程。默認值是0。若是未指定ramp-up period ,也就是說ramp-up period 爲零, JMeter 將當即創建全部線程。假設ramp-up period 設置成T 秒, 所有線程數設置成N個, JMeter 將每隔T/N秒創建一個線程。google

【3】Ramp-Up Period(in-seconds)表明隔多長時間執行,0表明同時併發spa

 

Delay Thread creation until needed         線程

延遲建立線程,直到該線程開始採樣,即以後的任何線程組延遲和加速時間爲線程自己。這樣能夠支持更多的線程,但不會有太可能是同時處於活動狀態。日誌

         

調度器         htm

選中調度器後,須要輸入啓動和結束時間。當測試啓動時,若是必須JMeter會等待啓動時間到達。在每一個週期 結束,JMeter檢驗結束時間是否到達,若是是,運行中止,若是不是測試被容許繼續,直到迭代限制到達。 

另外你可使用啓動延遲和持續時間文本域。注意啓動延遲會覆蓋啓動時間,持續時間會覆蓋結束時間。

 

 

如何設置適當的值並不輕易。

       首先,假如要使用大量線程的話,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。 糟糕的測試計劃一般會致使這些問題,這是由於在這樣的測試計劃裏,取樣器將不能充分地採集數據,可能由於測試計劃執行時間過短而且線程會很快的運行結束

 

 

假設:

線程數: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個用戶同時併發

 

 

 

 

 

 

 

 

 

 

 

 

如下資料引用: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。 糟糕的測試計劃一般會致使這些問題,這是由於在這樣的測試計劃裏,取樣器將不能充分地採集數據,可能由於測試計劃執行時間過短而且線程會很快的運行結束。 

相關文章
相關標籤/搜索