性能測試-實例講解VU、RPS、RT公式換算


概述

今天看到一篇文章講解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

 因為線程組只能設置整數,所以會和實驗三有一些誤差,不影響測試的准確性

 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM