本文由 Alan 投稿
做爲一名運維工程師,工做中最大的但願就是本身運維的網站可以穩定高效運行,但理想很豐滿現實很骨感,實際狀況是總會有各類各樣情況致使網絡、服務器或者應用環境發生故障。面對這種狀況,我以爲仍是要能從故障中總結出經驗規律,讓發生的概率不斷的下降。要完成穩定和高效二者中的任何一個都是一個極具挑戰的事情,這裏我以維護本身的blog爲例來闡述一下我對穩定這個詞的詮釋和理解。
個人Blog架設在wordpress環境上的,記錄了工做中的一些經驗總結和隨筆文章,雖然是我的網站,但麻雀雖小,五臟俱全,有必定的表明性。
一. 穩定之硬件穩定
硬件是基礎設施,必須打好硬件穩定的基礎。傳統的硬件選型通常都是購買HP,DELL的機架式服務器,根據本身的需求選擇CPU,內存,硬盤等,這種方式有一個弊端就是不能很方便的對硬件進行後期擴容,買了後通常狀況下就定型了,並且還要託管,購買帶寬,後期的硬件維護也是須要本身來作。面對這些問題,我以爲選擇當下比較煊赫一時的雲服務器是個不錯的選擇。它解決了:
1) 硬件型號再也不重要,天然也就不會成爲網站發展的瓶頸,CPU,內存,硬盤等硬件的大小都是彈性的,根據本身使用的狀況隨時能夠增大和減少
2) 雲服務器提供商提供託管場地和網絡帶寬設施
3) 由於雲服務器提供商通常都有大量的服務器,因此會專門有一個機房工程師天天作硬件,網絡的巡檢工做,及時發現問題並將基礎問題處理在萌芽階段
4) 對磁盤IO要求比較高的,能夠選擇購買本地磁盤和SSD磁盤來解決問題
總的來講,選擇雲服務器比較省心,並且國內的雲服務器也逐漸的成熟起來,我我的使用雲服務器這種方式7個月了,截止目前,硬件,網絡都沒有出現過問題,仍是比較穩定的。固然大型雲服務器提供商是比較好的選擇,阿里雲、騰訊雲、Ucloud都不錯。具體選擇哪家,能夠根據本身的實際狀況來酌情選擇。
二. 穩定之軟件穩定
軟件是具體提供服務的應用組件,要作好這個穩定我以爲比硬件難一些了,方方面面都要考慮清楚,這裏從下往上來逐個分析吧:
1)Wordpress是一個PHP環境的程序,那麼Linux做爲系統環境就是一個很好的選擇,其實穩定的另外一個特徵就是當出現了故障時可以很快的排除故障,在成百上千的Linux發佈系統中不少人最終選擇Redhat,CentOS確定是有其緣由的,CentOS是基於企業級linux系統發佈Redhat編譯而來,兼容性好並且無償使用,網絡中有大量的技術文章能夠借閱參考,64位也會逐漸的取代32位系統,我最後選擇的是CentOS6 64位系統環境。這裏不是說讓你們所有選擇此發行版,而是一個建議,在實際選擇過程當中最好根據本身的業務類型,選擇一個能用上3到5年的系統,不折騰。
2)nginx、mysql、php的搭檔組合有逐步取代AMP組合的趨勢,V1.0以上的nginx,V5.1以上的mysql,V5.4以上的PHP,這個版本選擇是目前比較實用的組合,可以支撐一段時間不須要在更新了。
3)組件選擇好後,比較關鍵的就是配置好這些組件了,配置這個過程沒有一個統一的標準,須要不一樣參數也就不一樣,但無論環境怎樣,仍是有幾個比較通用的法則:
A. 一個PHP和nginx進程大約佔用內存20M,最大容許的進程數是要根據本身的實際內存大小來動態調整,不然可能致使內存耗盡而系統崩潰
B.調整參數的原則就是讓本身的硬件資源可以充分利用,最大使用率根據28原則
C.配置的過程是一個按部就班的過程,不少時候也是在處理問題時逐步總結出來最優配置
三. 穩定之實時監控
網站對外發布後,剩下的任務就是要保證網站不出故障,持久穩定運行了。要作到這一點,就要對網站和硬件的運行狀況有一個全面的瞭解才能夠。掌握的數據越多,就對本身的網站運行狀況越有利。
可用性監控:
網站當下是否可以正常訪問,這是一個最基本的要求。但咱們不可能實時去盯着,這裏須要有個實時監控的服務去不斷的探測,提供這樣服務的工具備不少,例如nagios,zabbix等開源產品就是專門作這個事情的,週期性的探測網站的可用性,不過這種產品有一個很大的侷限性,就是nagios和zabbix是部署在和本身網站一樣的網絡環境中,經常會出現nagios探測是好的,但外部訪問卻不行的情況。
這裏我選擇了一個第三方公司的產品——雲智慧的監控寶,來作個人blog的可用性監控,其實現原理是使用它在全世界託管的監測服務器來週期性的訪問個人blog,這種監控比較接近於實際用戶訪問,比較有說服力,若是發現了問題,會有一個告警信息發送到手機、郵件上。
圖1
圖2
四. 穩定之壓力測試
壓力測試的目的是爲了可以對本身網站的最大負載能力有一個預估值,原則是測試一個有複雜業務邏輯的動態頁面爲好,經過壓力測試得出本身網站的最大併發值和承載能力。得出這個值以後,剩下的在配置參數的時候就有依據了。壓力測試的方法有不少種,比較常見的有ab,loadrunnner等工具。
五.穩定之硬件資源使用監控和併發數監控
壓力測試的目的就是爲了可以在這一環節有的放矢,網站上線後經過可用性監控得知網站是否能正常訪問。在經過硬件資源使用狀況和web服務的併發數監控,在監控中將告警閥值設置爲壓力測試過程當中的80%爲準。經過這樣的實時監控,就對本身的服務器的運行狀況有一個立體式的掌控,讓其可以運行在正常的區間中。
總結:
保證服務的穩定是一個持續的過程,經過時間的積累對本身維護的業務運行狀況愈來愈熟悉,對架構的掌握也愈來愈透徹,將網站架構中的薄弱環節加固,再經過後期的實時監控,對網站的總體運行狀況有一個清晰的認識,由此來讓本身運維的網站穩定運行。以上五點算是拋磚引玉吧,若是你有好的方法,隨時溝通交流:wxd5981@163.com
監控寶官網:
www.jiankongbao.com