天天看點

深入了解Jmeter常用定時器

前言

jmeter并發測試每個請求之間是沒有延時的,但實際工作有時候需要增加強定時間來測試,那麼可以Jmeter定器元件,完成工作。其實這些知識百度一查就出來,為什麼還要寫,主要友善自己複習,要找的時候就從自己文章中找出,而且這些自己通過自己調試後,直接可以拿出來用。

jmeter定時器分類:

Constant Timer 固定定時器

Uniform Random Timer 均勻随機定時器

Constant Throughput Timer 固定吞吐量定時器

Gaussian Random Timer 高斯随機定時器

JSR223 Timer JSR223定時器

Poisson Random Timer 泊松随機定時器

Synchronizing Timer 同步定時器

BeanShell Timer BeanShell腳本編寫定時器

Precise Throughput Timer 精準吞吐量定時器

深入了解Jmeter常用定時器

定時器

1、Constant Timer 固定定時器(重要常用):

深入了解Jmeter常用定時器

固定定時器

作用:通過ThreadDelay設定每個線程請求之前的等待時間(機關為毫秒)。注意:固定定時是有作用域的,放到線程組下其作用域是所有請求都會延遲固定器設定的時間,如果放到請求内,作用域是單個請求延遲時間(常用)。

2、Uniform Random Timer 均勻随機定時器

深入了解Jmeter常用定時器

Uniform Random Time定時器

作用:它産生的延遲時間是個随機值,而各随機值出現的機率均等。總的延遲時間等于一個随機延遲時間加上一個固定延遲時間,使用者可以設定随機延遲時間和固定延遲時間。

總延遲時間=指定範圍内的随機時間+固定延遲時間。

3、Constant Throughput Timer 固定吞吐量定時器

深入了解Jmeter常用定時器

Constant Throughput Timer 固定吞吐量定時器

作用: 按指定的吞吐量執行,以每分鐘為機關。計算吞吐量依據是最後一次線程的執行時延。

Target throughput(in samples per minute):目标吞吐量。注意這裡是每分鐘發送的請求數,可以選擇作用的線程:目前線程、目前線程組、所有線程組等,具體含義如下:

this thread only: 設定每個線程的吞吐量。總的吞吐量=線程數*該值。

all active threads in current thread group:吞吐量被分攤到目前線程組所有的活動線程上。每個線程将根據上次運作時間延遲。

all active threads:吞吐量被配置設定到所有線程組的所有活動線程的總吞吐量。每個線程将根據上次運作時間延遲。在這種情況下,每個線程組需要一個具有相同設定的固定吞吐量定時器。(不常用)

all active threads in current thread group (shared):同上,但是每個線程是根據組中的線程的上一次運作時間來延遲。相當于線程組組内排隊。(不常用)

all active threads (shared):同上,但每個線程是根據線程的上次運作時間來延遲。相當于讓所有線程組整體排隊。(不常用)

4、Gaussian Random Timer 高斯随機定時器

深入了解Jmeter常用定時器

Gaussian Random Timer 高斯随機定時器

作用:每個線程的延遲時間是符合标準正态分布的随機時間停頓,那麼使用這個定時器,總延遲 = 高斯分布值(平均0.0和标準偏差1.0)* 指定的偏內插補點+固定延遲偏移(Math.abs((this.random.nextGaussian() * 偏內插補點) + 固定延遲偏移))

5、JSR223 Timer JSR223定時器

深入了解Jmeter常用定時器

JSR223 Timer JSR223定時器

作用:JSR223計時器可以使用JSR223腳本語言生成延遲;

參考幫助文檔:

https://jmeter.apache.org/usermanual/component_reference.html#JSR223_Timer

6、Poisson Random Timer 泊松随機定時器

深入了解Jmeter常用定時器

Poisson Random Timer 泊松随機定時器

作用:這個定時器在每個線程請求之前按随機的時間停頓,總的延遲就是泊松分布值和偏移值之和。

上面表示暫停時間會分布在100到400毫秒之間:

(1)Lambda(in milliseconds):蘭布達值

(2)Constant Delay Offset(in milliseconds):暫停的毫秒數減去随機延遲的毫秒數

7、Synchronizing Timer 同步定時器(重要-常用)

深入了解Jmeter常用定時器

Synchronizing Timer 同步定時器

作用:用來設定集合點,其作用是:阻塞線程,直到指定的線程數量到達後,再一起釋放,可以瞬間産生很大的壓力

(1)Number of Simulated Users to Group by:模拟使用者的數量,即指定同時釋放的線程數數量,若設定為0,等于設定為線程組中的線程數量;

(2)Timeout in milliseconds:逾時時間,即逾時多少毫秒後同時釋放指定的線程數;如果設定為0,該定時器将會等待線程數達到了設定的線程數才釋放,若沒有達到設定的線程數會一直死等。如果大于0,那麼如果超過Timeout inmilliseconds中設定的最大等待時間後還沒達到設定的線程數,Timer将不再等待,釋放已到達的線程。預設為0

同步定時器(Synchronizing Timer)的逾時時間設定要求:逾時時間 > 請求集合數量 * 1000 / (線程數 / 線程加載時間)

8、BeanShell Timer BeanShell腳本編寫定時器(重要-常用)

簡單示例:

深入了解Jmeter常用定時器

BeanShell Timer BeanShell

參數說明:

Reset Interpreter:每次疊代是否重置解析器,預設為false;在長時間運作的腳本中建議設定為true。

Parameters:BeanShell腳本的入參。入參可以是單個變量;也可以是數組,若是字元串數組,兩個元素之間用空格隔開;也可以是常量。

File Name:BeanShell腳本可以從腳本檔案中讀取。

Script:在Script區直接寫BeanShell腳本。

增加一個Java Request請求,并且增加時間驗證是否按照自己設定的定時運作腳本:

Java Request ${__time(yyyy-MM-dd HH:mm:ss:SSS,)}

增加結果檢視樹:結果顯示按之前設定的每個1秒鐘運作

9、Precise Throughput Timer 精準吞吐量定時器

深入了解Jmeter常用定時器

Precise Throughput Timer 精準吞吐量定時器

Target Throught:目标吞吐量

Throught Period:表示在多長時間内發送Target Throught指定的請求數(以秒為機關)

Test Druation:指定測試運作時間(以秒為機關)

Number of threads in the bath:用來設定集合點,等到指定個數的請求後并發執行其它參數預設即可。