首頁>技術>

如今人們已經習慣從網際網路上獲取資訊,因此,幾乎任何一家公司都要有自己的網站。引入了一個新的事物後,必然會隨之帶來新的問題。網站是放在伺服器上的,一般來說網站的訪問量越大,伺服器的壓力就越大。為保證網站的正常運營,網站的運維人員有必要了解當前系統是否工作正常、系統的處理能力是否接近極限,以及需要新增多少臺伺服器來承載新增的壓力。作為一名合格的運維工程師,對於以上這些必須要做到心中有數。

1 容量規劃背景

一般的公司在網站擴容方面都是採用“憑經驗+逐步嘗試”的方法,這樣透過逐漸逼近的方式得到系統的極限承載量。再專業一點的公司,會讓運維人員搭建一套線下的測試環境,測試人員先線上下對各種關鍵URL做測試,透過分析測試報告找到系統的極限值。這種方法只能得出個大概值,因為真實的壓力取決於使用者的行為和當時的程式碼執行情況。

第三種方法是線上切換流量,也就是將一部分流量匯入到某些伺服器上,觀察日誌,直到出現報錯為止,然後再將流量切挽回到其他機器結點上,這種方法能夠得到最真實的系統壓力,但畢竟犧牲了部分使用者體驗。

以上3種方法的共性都是單次有效,下次換了新的程式碼環境還要重新手工測試。除了以上的方法外,還可以利用一些系統命令做監控,每天做出容量報表,透過檢視報表運維人員便監控到系統的實時壓力及實時容量,當逼近根據經驗判斷的壓力上限時,發出報警,提醒擴容。還有的公司是利用監控系統,找到半個月內的系統最大流量作為未來短期內的流量預估,基本上也是靠經驗。

上述方法都不能正確地得到系統所能正常承載的極限壓力,總的來說都是依靠經驗或犧牲使用者體驗為代價。因此需要將系統的極限壓力量化為具體的資料,進行更為準確的容量規劃。

2 容量研究的意義

容量管理的基本目標有兩個,一是使運維人員瞭解系統的承載力,二是以合理的硬體成本來滿足業務需求。減少成本是企業生存的剛性需求,技術人員同樣有責任在技術層面上幫助公司節約成本。在軟體方面,開發人員透過改程序序演算法來提升系統的工作效率;在硬體方面,運維人員除了規劃服務架構,還要根據業務型別定製專用的伺服器,有針對性地提升系統性能。無論在硬體還是軟體方面,都是在原有服務的規模下透過提升效能來減少硬體成本。除了以上兩個方面,還可以透過硬體容量規劃的方式進行最直接的成本控制,容量管理一方面是節約硬體成本,另一方面節約了人力成本。

為方便陳述,我們這裡所說的容量管理是指伺服器容量管理。容量管理主要用於評估各叢集模組在當前及未來流量下的利用率,讓系統容量“可見”。

模組的效能表現和實際執行的指令息息相關,並不是一次測試便能適用所有型別的程式碼環境,因此,當有新專案上線或在原有基礎上擴容時,較安全的做法是,需要重新評估機器效能用以考量服務的穩定性。容量管理可以量化服務的穩定性,測試人員可以專注於業務本身的測試工作,無須再做穩定性測試。

技術人員還要負責硬體成本預算的工作,在提交預算時要反覆權衡服務成本與穩定性。對於預算中的剛性需求,技術人員必須提供充分的理由予以支援,需要一套有效的資料作為預算的依據。有了容量管理系統,任何時候都可以用資料說話,系統需要多少臺機器不是技術人員決定的,而是由業務流量決定,這樣就為技術人員分擔了預算壓力,使他們能夠更加專心地投入工作。

3 容量研究的目標

目標是實現單入口流量預估,具體包括以下內容。

(1)判斷現有系統規模還可以再承載多少流量。

大家應該有這樣的經驗,一到假期,大家花費在網路上的時間會很多,也許會發現網站的響應有可能會變慢。對於網站來說,假期的流量比一般時候的流量要大,因此,在節假日的流量會有所上漲。我們可以估計出新的流量來判斷現有的系統是否可承受。

(2)對於新增的流量,採購裝置時給予指導,花最少的錢辦同樣的事。

公司一般會在每個季度做一次預算,因此,要提供一套理論公式支援部門的預算申請。對於運維部門來說,就要用資料來說話了,提供容量公式是最好的證明。

(3)流量切換時可以量化。

為了保證服務穩定,通常會提供雙機熱備,有時保險起見,會提供多餘的一套裝置。或者為了提速,提供的服務會劃分為多個冗餘系統,當某個機房的服務出現問題時,為保證正常服務,需要將流量切換到另一個機房。切換多少流量過去呢?這時候容量系統就派上用場了,為了不至於“壓垮”另一個機房的系統,需要事先知道另一個機房的系統容量還有多少空餘。

(4)最佳化服務規模。

產品服務中的機器數未必是最優的,容量管理可以根據訪問量和指定的容量利用率,自動計算出需要的機器規模。

以上幾點是容量規劃要實現的目標,更多內容請參考《大型網站伺服器容量規劃》

本文節選自《大型網站伺服器容量規劃》。

內容簡介

本書講解了用數學回歸分析方法來做伺服器容量規劃的思路,讓讀者掌握伺服器容量規劃的量化方法;模型的選擇是伺服器容量規劃的關鍵,不同的程式有不同的模型。本書使用nginx+PHP+MySQL為例項演示了具體的規劃過程,以便達到觸類旁通的作用,使讀者具備構建複雜模型的能力,以解決伺服器容量規劃的實際問題。本書還介紹了伺服器容量一般監控的技術及實現方法,如整機CPU、程序CPU、程序IO等。學習完相關章節後,讀者也可以編寫監控程式了。

本書適合網際網路行業運維工程師、測試工程師、技術經理、專案經理、產品經理,以及致力於從全域性把握運維和最佳化網站的所有網際網路從業人員。

8
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 收藏!長文!從Python小白到大牛,要走的路這裡都有(上)