1. 程式人生 > >吞吐量(Throughput) QPS 併發數 響應時間(RT)對系統性能的影響

吞吐量(Throughput) QPS 併發數 響應時間(RT)對系統性能的影響

                首先對吞吐量()、QPS、併發數、響應時間(RT)幾個概念一直比較模糊,也不知道哪些指標可以較好的衡量系統的效能。今天特意查了些資料做一些記錄:首先看一些概念(來自百度百科)
1. 響應時間(RT)
  響應時間是指系統對請求作出響應的時間。直觀上看,這個指標與人對軟體效能的主觀感受是非常一致的,因為它完整地記錄了整個計算機系統處理請求的時間。由於一個系統通常會提供許多功能,而不同功能的處理邏輯也千差萬別,因而不同功能的響應時間也不盡相同,甚至同一功能在不同輸入資料的情況下響應時間也不相同。所以,在討論一個系統的響應時間時,人們通常是指該系統所有功能的平均時間或者所有功能的最大響應時間。當然,往往也需要對每個或每組功能討論其平均響應時間和最大響應時間。
  對於單機的沒有併發操作的應用系統而言,人們普遍認為響應時間是一個合理且準確的效能指標。需要指出的是,響應時間的絕對值並不能直接反映軟體的效能的高低,軟體效能的高低實際上取決於使用者對該響應時間的接受程度。對於一個遊戲軟體來說,響應時間小於100毫秒應該是不錯的,響應時間在1秒左右可能屬於勉強可以接受,如果響應時間達到3秒就完全難以接受了。而對於編譯系統來說,完整編譯一個較大規模軟體的原始碼可能需要幾十分鐘甚至更長時間,但這些響應時間對於使用者來說都是可以接受的。

2. 吞吐量(Throughput)
     吞吐量是指系統在單位時間內處理請求的數量。對於無併發的應用系統而言,吞吐量與響應時間成嚴格的反比關係,實際上此時吞吐量就是響應時間的倒數。前面已經說過,對於單使用者的系統,響應時間(或者系統響應時間和應用延遲時間)可以很好地度量系統的效能,但對於併發系統,通常需要用吞吐量作為效能指標。
  對於一個多使用者的系統,如果只有一個使用者使用時系統的平均響應時間是t,當有你n個使用者使用時,每個使用者看到的響應時間通常並不是n×t,而往往比n×t小很多(當然,在某些特殊情況下也可能比n×t大,甚至大很多)。這是因為處理每個請求需要用到很多資源,由於每個請求的處理過程中有許多不走難以併發執行,這導致在具體的一個時間點,所佔資源往往並不多。也就是說在處理單個請求時,在每個時間點都可能有許多資源被閒置,當處理多個請求時,如果資源配置合理,每個使用者看到的平均響應時間並不隨使用者數的增加而線性增加。實際上,不同系統的平均響應時間隨使用者數增加而增長的速度也不大相同,這也是採用吞吐量來度量併發系統的效能的主要原因。一般而言,吞吐量是一個比較通用的指標,兩個具有不同使用者數和使用者使用模式的系統,如果其最大吞吐量基本一致,則可以判斷兩個系統的處理能力基本一致。

3. 併發使用者數
  併發使用者數是指系統可以同時承載的正常使用系統功能的使用者的數量。與吞吐量相比,併發使用者數是一個更直觀但也更籠統的效能指標。實際上,併發使用者數是一個非常不準確的指標,因為使用者不同的使用模式會導致不同使用者在單位時間發出不同數量的請求。一網站系統為例,假設使用者只有註冊後才能使用,但註冊使用者並不是每時每刻都在使用該網站,因此具體一個時刻只有部分註冊使用者同時線上,線上使用者就在瀏覽網站時會花很多時間閱讀網站上的資訊,因而具體一個時刻只有部分線上使用者同時向系統發出請求。這樣,對於網站系統我們會有三個關於使用者數的統計數字:註冊使用者數、線上使用者數和同時發請求使用者數。由於註冊使用者可能長時間不登陸網站,使用註冊使用者數作為效能指標會造成很大的誤差。而線上使用者數和同事發請求使用者數都可以作為效能指標。相比而言,以線上使用者作為效能指標更直觀些,而以同時發請求使用者數作為效能指標更準確些。
4. QPS每秒查詢率(Query Per Second)
  每秒查詢率QPS是對一個特定的查詢伺服器在規定時間內所處理流量多少的衡量標準,在因特網上,作為域名系統伺服器的機器的效能經常用每秒查詢率來衡量。對應fetches/sec,即每秒的響應請求數,也即是最大吞吐能力。

從以上概念來看吞吐量和響應時間是衡量系統性能的重要指標,QPS雖然和吞吐量的計量單位不同,但應該是成正比的,任何一個指標都可以含量伺服器的並行處理能力。當然Throughput更關心資料量,QPS更關心處理筆數。

QPS提升帶來什麼?QPS提升說明單臺伺服器處理能力提升,如果QPS提升1倍,伺服器資源減少1半,或者說伺服器不變可以支撐2倍的請求量。
如何提升QPS?
1)減少CPU的使用時間(哪些程式碼會消耗CPU:迴圈、字串拼接\查詢\替換、編碼\解碼、序列化\反序列化、壓縮)
2)增加CPU的數量
3)減少同步鎖
(如果CPU不能被壓到85%以上,並且此時的QPS已經達到了峰值,則說明另有瓶頸,接下去關注記憶體)
RT提升帶來什麼?
響應速度提升說明單詞請求的處理速度提升,使用者感覺任務處理速度更快,系統反應速度更快。當然在處理能力不變的情況下,RT的提升必然會提升QPS。
如何提升RT?
1)減少I/O的響應時間
2)減少I/O的呼叫次數
3)減少CPU使用時間(當然在I/O佔大頭的應用裡,這方面優化效果肯定不明顯)