1. 程式人生 > >QPS/TPS/併發量/系統吞吐量

QPS/TPS/併發量/系統吞吐量

 QPS/TPS,系統吞吐量。這個問題從業務上來講,可以理解為應用系統每秒鐘最大能接受的使用者訪問量。或者每秒鐘最大能處理的請求數;

  QPS: 每秒鐘處理完請求的次數;注意這裡是處理完。具體是指發出請求到伺服器處理完成功返回結果。可以理解在server中有個counter,每處理一個請求加1,1秒後counter=QPS。

  TPS:每秒鐘處理完的事務次數,一般TPS是對整個系統來講的。一個應用系統1s能完成多少事務處理,一個事務在分散式處理中,可能會對應多個請求,對於衡量單個介面服務的處理能力,用QPS比較多。

  併發量:系統能同時處理的請求數

  RT:響應時間,處理一次請求所需要的平均處理時間

計算關係:

  QPS = 併發量 / 平均響應時間

  併發量 = QPS * 平均響應時間
 

TPS計算:

TPS (transaction per second)代表每秒執行的事務數量,可基於測試周期內完成的事務數量計算得出。例如,使用者每分鐘執行6個事務,TPS為6 / 60s = 0.10 TPS。同時我們會知道事務的響應時間(或節拍),以此例,60秒完成6個事務也同時代表每個事務的響應時間或節拍為10秒。

 

利特爾法則  (Little’s law):

該法則由麻省理工大學斯隆商學院(MIT Sloan School of Management)的教授John Little﹐於1961年所提出與證明。它是一個有關提前期與在製品關係的簡單數學公式,這一法則為精益生產的改善方向指明瞭道路。

 

利特爾法則的公式描述為:Lead Time(產出時間)= 存貨數量×生產節拍     或     TH(生產效率)= WIP(存貨數量)/ CT(週期時間)

P.S: 稍後我們會列出負載模型中利特爾法則的應用公式。

 

我們通過2個示例來看一下此法則是如何在生產環境中發生作用的。

 

例1:假定我們所開發的併發伺服器,併發的訪問速率是:1000客戶/分鐘,每個客戶在該伺服器上將花費平均0.5分鐘,根據little's law規則,在任何時刻,伺服器將承擔1000×0.5=500個客戶量的業務處理。假定過了一段時間,由於客戶群的增大,併發的訪問速率提升為2000客戶/分鐘。在這樣的情況下,我們該如何改進我們系統的效能? 根據little's law規則,有兩種方案:

 

第一:提高伺服器併發處理的業務量,即提高到2000×0.5=1000。 或者

第二:減少伺服器平均處理客戶請求的時間,即減少到:2000×0.25=500。

 

例2:假設你排隊參觀某個風景點,該風景點固定的容納人數是:60人。每個人在該風景點停留的平均時間是:3分鐘。假設在你的前面還排有20個人,問:你估計你大概等多少時間才能進入該風景點。

答案:1小時(3×20=60),和該景點固定的容納人數無關。

 

為了通過利特爾法則研究負載模型,我們就先要了解兩個因子:響應時間(Response time)和節拍(Pacing)。實際上節拍會超越響應時間對TPS的影響。

 

示例1:節拍0秒,思考時間0秒

使用者執行5個事務並且每個事務的響應時間是10秒,需要花費50秒完成5個事務,即5/50=0.1 TPS (這裡TPS是由響應時間控制)。

 

示例2:速率15秒,思考時間0秒

使用者執行5個事務且每個事務的響應時間是10秒,但實際由於節拍大於響應時間,所以它優於響應時間控制了事務發生的頻率。完成5個事務需要5*15 = 75秒,產生5/75=0.06667 TPS。

 

在第二個示例中,平均響應時間小於節拍15秒,需要75秒完成5個迭代,產生了0.06667 TPS。

 

上面兩個例子中我們假設思考時間為0秒。如果思考時間為2秒,總時間仍是75秒完成5個迭代,產生0.06667 TPS。

 

節拍為0秒,則     使用者數 = TPS * ( 響應時間 + 思考時間 )

節拍不為0秒且大於響應時間與思考時間的和,則     使用者數 = TPS * (速率)

 

事實上TPS是事務在w.r.t時間的速率,所以也被稱為吞吐量(throughput)。

所以利特爾法則在負載模型中解釋為:系統內平均使用者數 = 平均響應時間 * 吞吐量

N = ( R + Z ) * X

N, 使用者數

R, 平均響應時間(也可能是速率)

Z, 思考時間

X, 吞吐量(如TPS)

 

如:N (使用者數)=1500, R (平均響應時間)=10, Z (思考時間)=0,則X (吞吐量)=1500/10=150 TPS