今天看到一篇文章講解VU、RPS、RT,中間有一個公式以下圖併發
點擊查看原文連接測試
併發數 = RPS * 響應時間 網站
因而我在本地作了幾回實驗,試圖驗證一下公式的準確性spa
實驗網站 www.baidu.com線程
100線程,一次迭代,啓動時間1s,線程組和聚合報告如圖所示3d
從結果能夠看出,100併發/s,一次迭代,平均響應時間是68msblog
若是根據上面公式來看的話token
RPS = 併發數/響應時間 = 100/0.068 ,大約是1470/Sget
可是咱們在線程組中能夠看出,預置的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定時器,經過精準的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
由於線程組只能設置整數,因此會和實驗三有一些偏差,不影響測試的準確性
結尾語:從幾回實驗結果來看,在樣本充足的狀況下,公式是沒有問題的。重點是作測試要時刻保持一顆質疑的心,不盲信任何權威 !