容量規劃概述
作者 左琴,火龍果軟體 發布於 2014-06-13
(1)單台節點到底最大處理能力是多少?
(2)目前線上有多少容量正在被使用?
(3)在一次大促前當前的機器數是否能夠支撐?
(4)什麼時候需要增加機器?加多少?
這時候,容量規劃就顯得格外必要了。通過集體組織的容量規劃學習,談談自己對容量規劃的認識和理解。
什麼樣的集群適合做容量規劃?只有線性可水平擴充套件的集群,我們才能通過獲取乙個節點的處理能力,計算出集群的處理能力,否則將會費很大物力和人力。
怎麼做容量規劃?一句話概括:線上壓測到單節點的某一指標達到臨界值,從而計算出集群的最大處理能力,再根據線上歷史監控獲得當前集群實際執行負荷,通過計算即可求出理論機器。
容量規劃能指導我們做什麼?如果計算出集群當前的負荷快達到極限處理能力時,我們可以垂直擴充套件(加cpu/記憶體/磁碟)和水平擴充套件(加機器)兩種方式來增加集群容量。
容量規劃六步走
step1 明確目標
容量規劃和計算,我們可以用運籌學中的優化命題來定義,優化命題的目標是集群實際負荷 <=集群理想負荷,求解這樣乙個不等式優化命題,同時系統需要滿足一定的不等式約束條件。
目標:
約束條件:
當然滿足目標的同時,集群的狀態是受到約束的,資源是不可能無限**,終會有一項資源會達到臨界值
step2 了解集群特點
而判斷集群式何種型別則可以通過線下的效能測試結果來判斷,線下的效能測試可以作為線上壓測的參考依據。
step3 選取容量指標
容量指標主要用作衡量伺服器的處理能力。容量指標的選取原則:1)線上資料可採集2)能夠客觀反映伺服器處理能力
作為容量指標,需要通過線上監控獲取統計資料,其歷史資料用於計算集群的實際負荷,而通過壓測獲得集群的最大處理能力。如上所說,cpu密集型集群常選tps作為容量指標,而儲存型集群常選流量作為容量指標。
step4 明確約束條件
約束條件的存在主要是作為線上壓測停止的訊號,常常會包括業務指標和資源指標。其中只要有一項指標達到臨界值,則停止壓測將當前容量指標的值作為集群的最大處理能力,例如某項服務質量要求響應時間不超過100ms,那當響應時間達到臨界值時,儘管其它指標並沒有達到極限但是也把此時作為集群最大處理能力。因此服務指標的選取原則:1)業務需求 2)資源使用瓶頸。一則保證產品的服務質量,二來保證系統的安全。
step5 線上壓測
線上壓測的主要目的主要用於獲取集群的最大處理能力,而對於線上壓測的手段主要介紹三種,針對不同的集群系統架構特點和業務型別選取不同的壓測手段。
模擬請求
模擬請求,即是模擬客戶端的呼叫方式向壓測伺服器發起請求,簡單易操作。
測試資料:可以通過分析線上日誌分析,根線上業務配比建立壓測模型,對於http請求業務還有一種簡單的方式,通過提取線上日誌資料url直接用於壓測請求資料。
實施步驟
將線上一台節點offline,測試客戶端直連被測伺服器
客戶端梯度增加併發(50),不斷增加併發直至超過設定的服務指標
優缺點測試效果不受服務實際流量的限制,壓測時間靈活,適用於get請求不會產生髒資料。業務指標可以通過測試客戶端直接獲取。
風險評估
風險低,首先機器offline不會影響到線上的正常請求;其次緩慢增加併發,不會造成服務崩潰的情況。
線上引流
線上引流,即將線上其它節點的請求複製到被測伺服器上,推薦使用tcpcopy工具。
測試資料:線上請求直接複製引流,無需準備資料
實施步驟
將線上一台節點off-line,按照tcpcopy部署的方法部署client和server,為了便於指標的統計,通常將tcpcopy部署在nginx所在伺服器,被壓測伺服器前需要增加一層nginx伺服器。
將集群的其它節點流量複製到off-line節點上,可以通過tcpcopy –r引數逐步增加複製係數,不斷增加-r引數直至超過設定的服務指標
如果100%全部線上流量都不能壓測到off-line節點的瓶頸,再逐步放大引流係數
優缺點請求真實,能夠放大流量,測試效果不受服務實際流量的限制,壓測時間靈活,但環境部
署稍微麻煩,對於put請求需要做一些業務處理,避免產生髒資料。
風險評估
風險低,首先機器offline不會影響到線上的正常請求,緩慢增加流量複製,不會造成服務崩潰的情況。
修改負載權重
對於乙個集群,前面往往會有負載均衡伺服器,以nginx為例,通過修改upstream模組的負載均衡weight可以不斷增加集群某一節點的請求數,增加其訪問壓力。
測試資料:無需準備
實施步驟
緩慢增加nginx的負載均衡係數,使被測節點壓力不斷增加
直至超過設定的服務指標停止增加壓力
優缺點風險評估
風險低,雖然在高峰期進行,但是只需要修改nginx配置再reload,對服務基本無影響,且每次都逐步增加weight,不會造成伺服器崩潰的情況。
step6 線上監控
線上監控不僅用於集群歷史資料的收集,計算集群的實際負荷的監控,還用於壓測過程中監控約束條件中的各種指標是否超限並停止壓測。根據集群的特點和之前效能測試經驗關注容量指標和約束條件的業務和資源指標。而這裡的歷史資料,是需要長期的採集和整理。
小結綜上所述,容量規劃主要圍繞著這麼乙個等式展開工作,紙上談來終覺淺,實踐出真知。希望能夠在接下來的實踐中成長和收穫。
容量測試與容量規劃
在效能測試中,需要根據具體的效能需求和系統架構等情況,採用不同的測試策略,其中最常見的策略就有容量測試。這篇部落格,就來聊聊容量測試以及容量規劃的一些內容。一 什麼是容量?如何理解?在開始之前,有一點需要知道 系統的處理能力是有限的!1 容量定義 所謂容量,即系統處於最大負載狀態或某項指標達到所能接...
apache WEB應用的容量規劃
apache主要是乙個記憶體消耗型的服務應用,我個人總結的經驗公式 apache max process with good perfermance total hardware memory apache memory per process 2 apache max process apache...
Exchange2007容量規劃
1 exchange 2k7郵箱伺服器資料與dc數量比例 如果您的dc為32位平台,ex2k7與dc的比例為4 1 如果您的dc為64位平台,ex2k7與dc的比例為8 1,若要達到 1 8 的比率,您必須在目錄伺服器上安裝足夠的記憶體,以在記憶體中快取整個 active directory 資料庫...