jmeter 實戰分析並發、RPS、RT 公式換算


前提

在阿里雲 PTS 上有一篇文章講解 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
 因為線程組只能設置整數,所以會和實驗三有一些誤差,不影響測試的准確性
 結尾語:從幾次實驗結果來看,在樣本充足的情況下,公式是沒有問題的

 

來源:https://testerhome.com/articles/20770


免責聲明!

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



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