概述
大部分新手在用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的控制器