jmeter壓力測試中的疑難雜症

飛天小子發表於2019-06-16

概述

大部分新手在用jmeter做壓力測試的時候,對一些效能術語十分模糊,直接導致的後果就是對測試出來的結果資料根本不能理解,更談不上分析了。今天的文章就著重給大家解釋一下壓力測試中的一些專有名詞

 

問題1:什麼是壓力測試

問到如何做壓力測試,很多人可能只會回答:"加執行緒組,加併發,看結果"。那麼什麼是壓力,壓力從哪裡體現?這些恐怕就不得而知了。。。

到底什麼是壓力呢?實際上我們在壓力測試中用RPS來表示

是不是有點懵了?什麼是RPS呢?

RPS 就是每秒請求數(Request Per Second),它描述了施壓引擎向伺服器實際發出的壓力大小。

Rps 由併發數和伺服器響應時間決定。併發數過低時可能達不到預期的 RPS,併發數過高時可能壓力過大直接就壓垮了伺服器。

 

問題2:jmeter怎麼調節壓力

從前面的描述中我們已經知道壓力就是每秒發出的請求數。現在再來理解一個名詞Ramp-up-period(in seconds)

jmeter線上程組中有一個可調節的數值:Ramp-up-period它表示啟動所有執行緒需要的時間,單位是秒

如下圖,我設定了100個執行緒,迭代次數=1,Ramp-up-period=25,那麼它表示我將在25秒內啟動100個執行緒,也就是每秒鐘啟動4個執行緒。

每個執行緒啟動之間的間隔時間是25/100=0.025s,也就是25ms。

換個理解方式,它表示了我們預期給伺服器的壓力就是每秒鐘傳送4個請求。也就是說,設定的RPS=4/s

如下圖,現在是不是能理解一些了?

 

 jmeter中的RPS是無法通過監聽器來直觀的監測到,但是可以通過側面方式去驗證一下。

下圖右上角能清晰的看出,我們100個執行緒用了25s才完全載入,或者說我們用了25s才成功的把100個請求發出去。那麼每秒的請求就是4

 

因為我們的指令碼是單介面,所以理論上來說,此時的TPS=HPS=RPS.下圖可以看出我們的幾個指標都是4/s。

HPS

 

TPS

 

 

 

問題3:jmeter中的throughput到底是什麼?

各位小夥伴們在使用jmeter時,是不是常常被 throughput 搞暈?到處都是throughput ,到底是做什麼用的呢?

 

我們先來看看有哪些throughput 元件

定時器中有目標Constant Throughput 和 Throughput Shaping Timer

 

 

邏輯控制器中有吞吐量控制器

 

 聚合報告中也有一個Throughput

撐不住了,好暈啊。。。啊。。。啊。。。。

穩住不要暈倒,下面帶大家一個個的來梳理,重建jmeter世界觀

 

先來理解一下什麼是Throughput

Throughput是用來衡量吞吐量的指標,通常由TPS和QPS來表示。

TPS表示每秒通過的事物數,QPS表示每秒查詢介面數。

jmeter中如果只有單介面,那麼TPS=QPS。

如果是多介面的混合場景,只有在事物控制器下執行,才能將其理解為TPS。

 

聚合報告中的 Throughput

下圖Throughput表示無限迭代下的業務吞吐量TPS,大約是99/s。意思就是每秒能處理99筆事物。

或者可以理解為:每秒能處理完成的請求數是99

 

Constant Throughput Timer

現在我們在介面下新增一個 Constant Throughput Timer

這是一個吞吐量定時器,它可以控制我們的TPS。

如圖,我設定了目標吞吐量是240/min,也就是4/s。

 

接下來執行的結果可以看到,無論我們預期的吞吐量有多大,實際的TPS都被強力壓縮在4/s,同時我們的平均響應時間也變的很短

 

 

Throughput Shaping Timer

再來看一下 Throughput Shaping Timer

下圖可以很明顯看到它是用來控制RPS的,也就是每秒請求數。

start=1 end=100,持續時間是60。表示我們需要在60s內將RPS(每秒請求數)均勻的從1提升到100。

 

 

下面可以看出來我們的每秒請求數均勻的在提升

 

邏輯控制器-吞吐量控制器

這個控制器裡的吞吐量,指的是請求比例。

比如我們總共發出9000個請求,這個控制器下的介面只會傳送3000個,比例控制在30%

下面這張圖更直觀的說明了請求的比例分配

login1的控制器分配的比例是30%,剩餘的70%都分給了login2的控制器

 

 

相關文章