正如飛機在起飛前,機長、副機長要過一遍checklist檢查,確認沒問題了才能起飛。樓主也整理了一個系統容量現狀checklist,方便對照檢查。本文搭配架構師必備:如何做容量預估和調優,食用更佳。
作為架構師,不要覺得系統容量是運維工程師才關心的問題,而應當對系統容量現狀做到了如指掌。這樣才能知道系統的瓶頸在哪,哪些優化是要優先做的,以及為了應對活動期間突發的流量,做多少擴容。
本文分為2大部分,一是資源使用率,二是業務指標。
資源使用率
服務例項
- 例項個數、每個例項server的工作執行緒個數、MQ消費組執行緒個數
- QPS峰值
- 介面響應時間:平均、95分位、99分位、最大值
- CPU使用率峰值
- 報錯數量/秒
- JVM堆記憶體使用率峰值
- GC回收時間
- 磁碟使用率(如有,一般無本地儲存)
MySQL
- 分庫數量、分表數量、從庫個數、路由規則
- QPS峰值、TPS峰值、讀寫比例
- CPU使用率峰值
- 磁碟使用率
- 有無熱點、資料傾斜
- 行總數
- 主從複製/同步延遲ms
- 慢查詢數量/秒
- 長事務數量/秒
Redis
- 例項個數、叢集方式
- QPS峰值、TPS峰值、讀寫比例
- CPU使用率峰值
- 記憶體使用率峰值
- key總數
- 有無熱點例項、有無熱點key
HBase
- 例項個數、region個數
- CPU使用率峰值
- 磁碟使用率
- 行總數
- compaction時間段
- 有無熱點例項、有無資料傾斜
ElasticSearch
- 例項個數、分片shard個數、路由規則
- 文件document個數
- CPU使用率峰值
- 磁碟使用率
- 有無熱點例項、有無資料傾斜
訊息佇列
- 例項個數、分片partition個數
- 訊息TPS峰值
- 消費堆積數量
- CPU使用率峰值
- 訊息保留時長
業務指標
核心流程的業務指標
每個系統都不一樣,需要根據實際情況定義業務指標。如:
- xxx成功率
- xxx失敗率
- xxx個數、次數
- xxx時長
- xxx參與人數
- xxx金額
狀態機流轉情況
如圖所示,示例的狀態機流轉情況如下:
- 流轉方向:只能從1流向2,不能從2流向1
- 前置狀態:只能從2或3流向4,不能從1流向4
- 中間態停留時長:2、3、4是中間狀態,不應當長時間停留,否則認為是卡住了
- 終結狀態:5(成功)和6(失敗)是終結終態,最終都會變成5或6
因此,需要關心的業務指標如下:
- 各狀態的個數
- 成功率:成功終結狀態的比例
- 整個流程的時長
- 卡在中間態的個數、時長