天天看點

【轉載】QPS、PV 、RT(響應時間)之間的關系

在進行系統性能壓測和系統性能優化的時候,會涉及到qps,pv,rt相關的概念,本文總結一下qps,pv,rt之間的關系,放在部落格備忘,本文參考了之前在淘寶工作時候的一些資料。

qps:單個程序每秒請求伺服器的成功次數

qps = req/sec = 請求數/秒

qps統計方式 [一般使用 http_load 進行統計] 

qps = 總請求數 / ( 程序總數 * 請求時間 )

單台伺服器每天pv計算:

公式1:每天總pv = qps * 3600 * 6

公式2:每天總pv = qps * 3600 * 8

伺服器數量 = 每天總pv / 單台伺服器每天總pv

峰值qps和機器計算公式:

原理:每天80%的通路集中在20%的時間裡,這20%時間叫做峰值時間 

峰值時間每秒請求數(qps):( 總pv數 * 80% ) / ( 每天秒數 * 20% )

峰值機器數量:峰值時間qps / 單台機器的qps

例子:

問:每天300w pv 的在單台機器上,這台機器需要多少qps?

答:( 3000000 * 0.8 ) / (86400 * 0.2 ) = 139 (qps)

問:如果一台機器的qps是58,需要幾台機器來支援? 答:139 / 58 = 3

性能壓測的情況下,起初随着使用者數的增加,qps會上升,當到了一定的閥值之後,使用者數量增加qps并不會增加,或者增加不明顯,同時請求的響應時間卻大幅增加。這個閥值我們認為是最佳線程數。

為什麼要找最佳線程數

過多的線程隻會造成,更多的記憶體開銷,更多的cpu開銷,但是對提升qps确毫無幫助

找到最佳線程數後通過簡單的設定,可以讓web系統更加穩定,得到最高,最穩定的qps輸出

最佳線程數的擷取:

通過使用者慢慢遞增來進行性能壓測,觀察qps,響應時間

根據公式計算:伺服器端最佳線程數量=((線程等待時間+線程cpu時間)/線程cpu時間) * cpu數量

單使用者壓測,檢視cpu的消耗,然後直接乘以百分比,再進行壓測,一般這個值的附近應該就是最佳線程數量。

影響最佳線程數的主要因素:

io

io開銷較多的應用其cpu線程等待時間會比較長,是以線程數量可以開的多一些,相反則線程數量要少一些,其實有兩種極端,純io的應用,比如proxy,則線程數量可以開到非常大(實在太大了則需要考慮線程切換的開銷),這種應用基本上後端(比如這個proxy是代理搜尋的)的qps能有多少,proxy就有多少。

cpu

對于耗cpu的計算,這種情況一般來講隻能開到cpu個數的線程數量。但是并不是說這種應用的qps就不高,往往這種應用的qps可以很高,因為耗cpu計算的應用,往往處理單次請求的時間會很短。

在最佳線程數量之前,qps和線程是互相遞增的關系,線程數量到了最佳線程之後,qps持平,不在上升,甚至略有下降,同時響應時間持續上升。

同一個系統而言,最佳線程數越多,qps越高

繼續閱讀