效能測試-例項講解VU、RPS、RT公式換算

飛天小子發表於2019-07-19

概述

今天看到一篇文章講解VU、RPS、RT,中間有一個公式如下圖

 

 

點選檢視原文連結

 

併發數 = RPS * 響應時間 

於是我在本地做了幾次實驗,試圖驗證一下公式的準確性

 實驗網站 www.baidu.com

第一次實驗

100執行緒,一次迭代,啟動時間1s,執行緒組和聚合報告如圖所示

 

從結果可以看出,100併發/s,一次迭代,平均響應時間是68ms

如果根據上面公式來看的話

RPS = 併發數/響應時間 = 100/0.068 ,大約是1470/S

但是我們線上程組中可以看出,預置的RPS是 100/S

差距有點大哦~~~想想為什麼呢?

 

第二次實驗

100執行緒,持續迭代,1s內啟動執行緒,持續執行10s。執行緒組和聚合報告如圖所示。

 

從聚合報告可以看出來,平均TPS= 1303。那麼我們可不可以就認定這個TPS=RPS呢?

簡單計算一下就知道了。

圖中可以看出我們的單次響應時間是72ms,那麼1秒內大約能迭代14次。100個執行緒下,一秒內大約能傳送1400個請求。

因此我們的RPS大約是1400/S

這樣就能看出來,一秒內傳送1400次請求,但是1s內只有1300個請求能響應完畢

我們再反向驗證一下併發數

併發數 = RPS*響應時間,1400* 0.072 等於100.8,和執行緒組裡面設定的併發數幾乎相同。

如果我們用Throughput=RPS去反向驗證

併發數 = RPS*響應時間,1303* 0.072 等於93和執行緒組裡面設定的併發數就有一些差距了。

這兩次實驗得出的結論:在持續迭代下,由於樣本充足,所以公式成立。但是RPS!= TPS

 

第三次實驗

這次我們直接加上RPS定時器,通過精準的RPS來驗證公式

我們讓200RPS保持1分鐘,檢視聚合報告

 

首先我們就能看出,在200RPS下,平均TPS只有172!

其次,平均併發數 = 200*0.047 = 9.4   意味著我只需要9個執行緒,就可以在一秒內釋放200RPS的壓力

可以算出每個執行緒每秒的請求數是 200/9.4 =21,也就是一個執行緒一秒內最大迭代21次

反推每個請求的響應時間 大約 是 1000/21 大約是 47ms 

前後驗證的結果都相符!

 

第四次實驗

這一次我們直接線上程組中設定剛剛20RPS下得出的平均併發數值 9,反向推斷出RPS的準確性

計算一下RPS = 9 /0.043 約等於209

 因為執行緒組只能設定整數,所以會和實驗三有一些誤差,不影響測試的準確性

 

 結尾語:從幾次實驗結果來看,在樣本充足的情況下,公式是沒有問題的。重點是做測試要時刻保持一顆質疑的心,不盲信任何權威 !

 

相關文章