吞吐量(TPS)、QPS、並發數、響應時間(RT)概念


開發的原因,需要對吞吐量(TPS)、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,即每秒的響應請求數,也即是最大吞吐能力。 (看來是類似於TPS,只是應用於特定場景的吞吐量)

 

附:

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占大頭的應用里,這方面優化效果肯定不明顯) 
 
QPS和TPS的區別 
QPS:Queries Per Second意思是“每秒查詢率”,是一台服務器每秒能夠相應的查詢次數,是對一個特定的查詢服務器在規定時間內所處理流量多少的衡量標准。
TPS:是TransactionsPerSecond的縮寫,也就是事務數/秒。它是軟件測試結果的測量單位。一個事務是指一個客戶機向服務器發送請求然后服務器做出反應的過程。客戶機在發送請求時開始計時,收到服務器響應后結束計時,以此來計算使用的時間和完成的事務個數。

 

 

一個系統的吞吐量(承受能力)與request對CPU的消耗,外部接口,IO等等緊密關聯。

單個request對CPU消耗越高,外部系統接口,IO影響速度越慢,系統吐出能力越低,反之越高。

系統吞吐量幾個重要參數:QPS(TPS),並發數,應答時間

QPS(TPS):每秒鍾request/事務 數量

並發數:系統同時處理的request/事務數

應答時間:一般取平均應答時間

很多人經常會把並發數和TPS理解混淆,理解上面三個要素的意義之后,就能推算出他們之間的關系:

QPS(TPS)=並發數/平均響應時間

一個系統吞吐量通常由QPS(TPS),並發數兩個要素決定,每套系統這兩個值都有一個相對極限值,在應用場景訪問壓力下,只要某一項達到系統最高值,系統的吞吐量就上不去了,如果壓力繼續增大,系統的吐出量反而會下降,原因是系統超負荷工作,上下文切換,

內存等等其他消耗導致系統性能下降。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM