前言
當我們在做大促,類似於雙十一的活動時候,老闆就會跑過來問我們這些問題
1.線上服務能承受多大的訪問量
2.單臺服務器能承受多大的訪問量
3.需要加機器嗎?需要加多少臺機器
這個時候,就體現出容量規劃的重要性了。那到底什麼是容量規劃呢?
容量規劃是以當前的性能作爲基線,來決定你需要什麼及什麼時候需要
容量 VS 性能
- 性能:決定一輛車能裝什麼東西
- 容量:決定需要多少量車
容量規劃可以分解爲下面 4 個步驟
- 明確目標
- 收集指標
- 趨勢預測
- 容量部署
明確目標
在沒有明確網站需求之前,不應該開始容量規劃。
一般每個服務都有對外承諾的服務質量,那麼我們就需要根據這個目標來做容量規劃及硬件方面的投入。
比如 A 網站能承受 3000 QPS,響應時間小於 200 ms。
SLA (服務等級協議)
收集指標
不知道當前服務能承受的容量範圍的話,不建議進行容量方面的規劃。
我們需要通過測試來了解當前服務的數據指標。沒有測試出你的服務上限的話,規劃出來也是沒有效果的。
測試主要分爲下面 2 個步驟
- 測試服務器的主要功能 :業務維度 QPS、TPS
- 測試服務器硬件資源 : CPU、內存、硬盤、網絡
趨勢預測
預測容量是一個持續的過程,需要靠數學與直覺來進行精確的預測。
整體過程如下
- 首先確定資源度量指標 :比如內存消耗、硬盤消耗、CPU 消耗
- 其實對擁有的資源確定約束訪問 : 比如 總內存大小、總硬盤大小等
- 最後根據監控趨勢圖( Zabbix 、Metrics)算出具體容量超出時間點 : 比如內存何時會耗盡
容量部署
一旦確定未來需要多少容量才能滿足業務需求,就可以着手新的設備,並進行部署。
通過自動化部署工具( Ansible、 Salt ) 最大限度的減少部署時間
參考
- Web容量規劃的藝術 https://book.douban.com/subject/4200645/