如何提高系統的吞吐量(QPS/TPS)


一.系統吞度量要素:

一個系統的吞度量(承壓能力)與request對CPU的消耗、外部接口、IO等等緊密關聯。單個reqeust 對CPU消耗越高,外部系統接口、IO影響速度越慢,系統吞吐能力越低,反之越高。

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

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

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

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

(很多人經常會把並發數和TPS理解混淆)

理解了上面三個要素的意義之后,就能推算出它們之間的關系:

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

舉個例子:

銀行窗口業務,早上8點上班,窗口數量為10個窗口,平均每個人辦理業務的時候為5分鍾。可以用下面的方法計算。

並發數=10個窗口

平均響應時間為 = 5*60 秒

QPS = 10/(5*60) 事務/秒

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

決定系統響應時間要素

我們做項目要排計划,可以多人同時並發做多項任務,也可以一個人或者多個人串行工作,始終會有一條關鍵路徑,這條路徑就是項目的工期。

系統一次調用的響應時間跟項目計划一樣,也有一條關鍵路徑,這個關鍵路徑是就是系統影響時間;

關鍵路徑是有CPU運算、IO、外部系統響應等等組成。

二.如何提高系統QPS?

由前面的公式:QPS(TPS)= 並發數/平均響應時間 可以看出,要提高qps,我們必須做2個方面努力

增加並發數

  1. 比如增加tomcat並發的線程數,開喝服務器性能匹配的線程數,可以更多滿足服務請求。

  2. 增加數據庫的連接數,預建立合適數量的TCP連接數

  3. 后端服務盡量無狀態話,可以更好支持橫向擴容,滿足更大流量要求

  4. 調用鏈路上的各個系統和服務盡量不要單點,要從頭到尾都是能力對等的,不能讓其中某一點成為瓶頸。

  5. RPC調用的盡量使用線程池,預先建立合適的連接數。

減少平均響應時間

  1. 請求盡量越前結束,越好,這樣壓力就不要穿透到后面的系統上,可以在各個層上加上緩存
  2. 流量消峰。放行適當的流量,處理不了的請求直接返回錯誤或者其他提示。和水壩道理很類似
  3. 減少調用鏈
  4. 優化程序
  5. 減少網絡開銷,適當使用長連接
  6. 優化數據庫,建立索引

最后,要優化的地方還有很多,上面只是列舉常見一些要注意的地方,優化的指導原則就是

增加並發數 和減少平均響應時間

參考


免責聲明!

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



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