在了解qps、tps、rt、併發數之前,首先我們應該明確乙個系統的吞吐量到底代表什麼含義,一般來說,系統吞吐量指的是系統的抗壓、負載能力,代表乙個系統每秒鐘能承受的最大使用者訪問量。
乙個系統的吞吐量通常由qps(tps)、併發數來決定,每個系統對這兩個值都有乙個相對極限值,只要某一項達到最大值,系統的吞吐量就上不去了。
queries per second,每秒查詢數,即是每秒能夠響應的查詢次數,注意這裡的查詢是指使用者發出請求到伺服器做出響應成功的次數,簡單理解可以認為查詢=請求request。
qps=每秒鐘request數量
transactions per second 的縮寫,每秒處理的事務數。乙個事務是指乙個客戶機向伺服器傳送請求然後伺服器做出反應的過程。客戶機在傳送請求時開始計時,收到伺服器響應後結束計時,以此來計算使用的時間和完成的事務個數。
針對單介面而言,tps可以認為是等價於qps的,比如訪問乙個頁面/index.html,是乙個tps,而訪問/index.html頁面可能請求了3次伺服器比如css、js、index介面,產生了3個qps。
tps=每秒鐘事務數量
response time縮寫,簡單理解為系統從輸入到輸出的時間間隔,寬泛的來說,他代表從客戶端發起請求到服務端接受到請求並響應所有資料的時間差。一般取平均響應時間。
簡而言之,系統能同時處理的請求/事務數量。
qps=併發數/rt 或者 併發數=qps*rt
舉個栗子:
假設公司每天早上9點到10點1個小時內都有員工要上廁所,公司有3600個員工,平均每個員工上廁所時間為10分鐘,我們來計算一下。
qps = 3600/(60*60) 1
rt = 10*60 600秒
併發數 = 1 * 600 600
這樣就意味著如果想達到最好的蹲坑體驗,公司需要600個坑位來滿足員工需求,否則的話上廁所就要排隊等待了。
按照qps=併發數/rt公式,假設我們現在是單執行緒的場景,那麼qps公式應該是這樣:qps=1/rt,實際上rt應該=cpu time + cpu wait time,如果將執行緒數提高到2,那麼qps=2/(cpu time + cpu wait time),那麼是否意味著我們只要單純提高執行緒數就能提高qps呢?
假設cpu time是49ms,cpu wait time是200ms,那麼qps=1000ms/249ms=4.01,這裡200ms的wait時間我們可以認為cpu一直處於等待狀態啥也沒乾,理論上來說200ms還可以接受200/49≈4個請求,不考慮上下文切換和其他開銷的話,可以認為匯流排程數=(200+49)/49=5,如果再考慮上cpu多核和利用率的問題,我們大致可以認為:最佳執行緒數=rt/cpu time * cpu核心數 * cpu利用率
那麼最大qps公式推導為:
最大qps=最佳執行緒數*單執行緒qps=(rt/cpu time * cpu核心數 * cpu利用率)*(1/rt) = cpu核心數*cpu利用率/cpu time
那麼這樣是否意味著我們只要不停增加cpu核心數就能無限提高qps呢
g.m.amdahl在2023年提出了amdahl』s law,針對並行處理的scalability給出了乙個模型,指出使用並行處理的提速由問題的可並行的部分所決定。我們可以簡單理解為程式通過額外的計算資源,理論上能獲得的加速值。
par為平行計算所佔的比例,p為並行處理節點個數
假設你想從望京去順義,坐一輛車需要3小時,雖然現在有3輛車,你也不能1小時就到。這裡無法並行,所有par=0%,p=3,加速比還是等於1,並沒有提高速度。
斯塔夫森定律又被稱為擴充套件的加速比(scaled speedup),他說明處理器個數、序列比例和加速比之間的關係,只是和阿姆達爾定律側重角度有所不同。
按照阿姆達爾定律和qps計算公式,在cputime 和 cpu利用率不變的情況下,增加cpu核心數就能增加最大qps,在par不為0即並行的時候,增加並行數量p就能提公升效率,但是實際上隨著請求數量的增加,帶來大量的上下文的切換、gc和鎖變化。qps更高,產生物件越多,gc越頻繁,cpu time和利用率都受到影響,尤其在序列的時候,鎖自旋、自適應、偏向等等也成為影響par的因素。
總結,為了提公升達到最好的效能,我們需要不斷的進行效能測試,調整小城池大小,找到最合適的引數來達到提高效能的目的。
什麼是QPS TPS RT 吞吐量?
qps queries per second意思是 每秒查詢率 是一台伺服器每秒能夠相應的查詢次數,是對乙個特定的查詢伺服器在規定時間內所處理流量多少的衡量標準。網際網路中,作為網域名稱系統伺服器的機器的效能經常用每秒查詢率來衡量。tps 是transactionspersecond的縮寫,也就是事...
吞吐量 併發量
併發數 吞吐量的概念最初用來衡量網路裝置的效能,後來推廣到伺服器及業務上評估系統的整體效能。一 網路裝置的併發數 吞吐量 併發數 concurrency 也叫併發連線數,指網路裝置所能處理的最大會話數量。這裡的會話數是指請求 響應一次會話。吞吐量 throughput 使用者請求是由乙個個資料報組成...
吞吐量 QPS 併發數等概念
開發原因需要了解吞吐量 tps qps 併發數 響應時間 rt 等概念如下 1。響應時間 rt 響應時間是指系統響應請求的時間。直覺上,這個指標非常符合人們對軟體效能的主觀感受,因為它完整地記錄了整個計算機系統的處理時間。由於乙個系統通常提供多種功能,不同功能的處理邏輯差異很大,不同功能的響應時間也...