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