
某網(wǎng)絡(luò)公司是新成立的B2B企業(yè)。當(dāng)時,我是技術(shù)主管,擔(dān)任這家公司網(wǎng)絡(luò)平臺的架構(gòu)、開發(fā)和管理的工作。在技術(shù)部同事的日夜奮戰(zhàn)下,不到一個月我們的網(wǎng)絡(luò)運營系統(tǒng)就全面上市了。之后三個月的運行過程中,系統(tǒng)除了修改當(dāng)時需求不明確的地方外,運行相對穩(wěn)定。當(dāng)時的日訪問量已經(jīng)達(dá)到100萬,Aleax排名在20萬名。
我們的工作越來越輕松,每天就是檢查各站點是否正常,看著訪問量不斷增加。同時,我們也不忘未雨綢繆,開始向老板提出新的服務(wù)器方案。但公司當(dāng)時決定把大量的資金投入到廣告上,基本不考慮我們的方案。
直到有一天,技術(shù)部電話突然成了熱線……
那天,我剛到公司就接到業(yè)務(wù)部電話說網(wǎng)站打不開了。又過一會兒,老板也打來電話問我們的網(wǎng)站怎么打不開。沒過幾分鐘,老板再次打來電話說:“楊工,我們目前在各大門戶網(wǎng)站、搜索網(wǎng)站投入了大量廣告,趕緊找到網(wǎng)站打不開的原因,否則一天巨額的廣告費就損失了。”
經(jīng)過技術(shù)部同事的努力,網(wǎng)站很快恢復(fù)了正常。但不一會兒所有部門又都打來電話說網(wǎng)站打開什么都沒有。技術(shù)部的工程師打開來看,的確如此。我心想:“這是怎么回事?剛才不是已經(jīng)恢復(fù)了嗎?”
這次,我先讓網(wǎng)站正常運行起來,然后查看早上的系統(tǒng)日志。結(jié)果發(fā)現(xiàn),早上網(wǎng)站一直是停止的,最后的日志是早上六點多的。可以肯定,它從六點到上班都不是正常服務(wù)的。進行Windows的TCP/IP連接分析和服務(wù)狀態(tài)分析后我們得知,在這幾天網(wǎng)站每天總的頁面訪問量均達(dá)到了5000萬。
網(wǎng)站宕機的原因終于弄清了,那就是大量的廣告投入使每天網(wǎng)站的總頁面瀏覽量超過5000萬。這完全不在技術(shù)方案的預(yù)料中,而且公司的大量廣告投入技術(shù)部事先也不知道。這讓我們措手不及。
那幾天我們上班不做別的,就8小時盯著服務(wù)器,一發(fā)現(xiàn)應(yīng)用服務(wù)器內(nèi)存/連接過高時,就重起服務(wù)。這樣基本上可以在3~5秒鐘之內(nèi)完成服務(wù)的重起,網(wǎng)站基本保持不中斷。但可怕的是8小時之外,當(dāng)所有人都下班了,要是服務(wù)停止,基本上就要等到第二天才有人知道。那幾天,每天晚上基本上老板都會打電話來說網(wǎng)站打不開,要求馬上處理。由于晚上訪問的人數(shù)相對要少些,基本上是重啟一次就可以堅持到第二天早上。就這樣一天一天地過去,我們對服務(wù)器的管理非常被動。我們一邊采用定時檢查服務(wù)的方法來維持系統(tǒng)的運行,一邊討論解決方案。
公司重要的營銷計劃,只要與IT系統(tǒng)有關(guān)系,就都要與IT部門提前溝通,否則后果會很嚴(yán)重。
經(jīng)過討論,我們決定對網(wǎng)站軟、硬件結(jié)構(gòu)進行重新規(guī)劃,主要采用細(xì)分頻道、前端緩存技術(shù)、負(fù)載均衡、靜態(tài)頁面等技術(shù)。我們經(jīng)過仔細(xì)分析發(fā)現(xiàn),公司網(wǎng)站的基礎(chǔ)架構(gòu)的確存在一些先天的不足,比如:所有頻道都在同一應(yīng)用程序服務(wù)器中運行;只有一臺Web服務(wù)器,沒有做負(fù)載均衡;所有頁面數(shù)據(jù)均在訪問時從數(shù)據(jù)庫中產(chǎn)生;項目本身需求不明確,對網(wǎng)站的進程沒有明確等。這些都是導(dǎo)致系統(tǒng)沒法應(yīng)對突發(fā)其來的高訪問量的直接原因。
針對這些不足,我們分別采取了以下措施:首先,采用多應(yīng)用程序服務(wù)器、分頻道的方式,分散網(wǎng)站的頻道到不同的應(yīng)用程序服務(wù)器中,減輕同一應(yīng)用程序服務(wù)器的壓力。其次,在所有應(yīng)用程序服務(wù)器前端加了緩存服務(wù)器和負(fù)載均衡器,達(dá)到分流的目的。另外,我們通過生成靜態(tài)頁面,把以前在訪問時才調(diào)用的數(shù)據(jù)庫中的數(shù)據(jù)全部生成HTML文件。這主要是考慮內(nèi)容系統(tǒng),靜態(tài)頁面可以讓緩存服務(wù)器達(dá)到更好的緩存效果,同時也能大大減輕數(shù)據(jù)庫、應(yīng)用程序的壓力。新方案的實施僅用了一周時間,我們就把以前的網(wǎng)站分成了幾個頻道,并加了負(fù)載均衡和緩存,這大大增加了網(wǎng)站的穩(wěn)定性。網(wǎng)站宕機的頻率越來越小,整個技術(shù)部又恢復(fù)了以前的平靜。
但是,無論多穩(wěn)定的系統(tǒng)總是會有出問題的時候。為保證公司系統(tǒng)正常運營,我們在8小時內(nèi)間隔性地查看各服務(wù)器的工作狀態(tài),比如不定時地查看各服務(wù)器的CPU使用率、內(nèi)存使用、磁盤空間、應(yīng)用服務(wù)器工作狀態(tài)、APACHE的服務(wù)狀態(tài)、Oracle會話數(shù)、Oracle死鎖會話等。
但是隨著公司業(yè)務(wù)的增加,服務(wù)器也開始迅速地增加,后來達(dá)到了四十多臺。要一臺一臺地檢查這些系統(tǒng)的運行狀態(tài)就得一臺一臺地登錄其中進行詳細(xì)查詢,這種被動的服務(wù)器管理使得我們的服務(wù)器運維成本越來越高。
在充滿機會的時代,今天的小公司沒準(zhǔn)就是明天的巨人。所以,IT系統(tǒng)規(guī)劃不能只滿足當(dāng)前需要,而是要著眼于未來,考慮長遠(yuǎn),適應(yīng)業(yè)務(wù)快速發(fā)展的需求。
當(dāng)時,網(wǎng)站普遍存在的問題是異常情況出現(xiàn)后,直接負(fù)責(zé)人不能即時發(fā)現(xiàn)。即使直接負(fù)責(zé)人有時發(fā)現(xiàn)了異常,由于受到時空的限制(比如無互聯(lián)網(wǎng)、外出等)也不能即時處理服務(wù)器的故障,使得服務(wù)器出現(xiàn)故障后不能即時恢復(fù)。這些故障如果出現(xiàn)在核心系統(tǒng)中還可能導(dǎo)致更嚴(yán)重的經(jīng)濟損失。比如,如果是制造企業(yè)的MIS系統(tǒng)出現(xiàn)故障而沒有能及時發(fā)現(xiàn)和處理,每一小時損失可能就是上百萬元。
工程師定時登錄服務(wù)器查詢各服務(wù)器的狀態(tài)、性能、服務(wù)運行狀態(tài)固然是一種維護服務(wù)器穩(wěn)定運行的有效方法,但是人為被動地去查詢總是不方便的。因為首先,人不可能24小時不間斷地檢查服務(wù)器的運行狀態(tài);其次,當(dāng)服務(wù)器越來越多時,每一次檢查都將占用一上午甚至更長的時間,運維時間成本將不堪重負(fù);同時,24小時值班監(jiān)視服務(wù)器,人力成本也越來越高。
技術(shù)部多次討論,設(shè)想如果能開發(fā)一套監(jiān)控管理系統(tǒng)就好了,但是人力緊張,遠(yuǎn)水救不了近火。
如果采用一個平臺來集中監(jiān)控和管理所有服務(wù)器,以上問題將都不存在,同時網(wǎng)絡(luò)運維人員也不再用24小時值班和定時查詢服務(wù)器的運行狀態(tài)了。集中監(jiān)控系統(tǒng)將代替運維工程師實時監(jiān)控所有服務(wù)器的運行狀態(tài)和各種性能參數(shù),并在不正常時以短信、電子郵件等方式向直接負(fù)責(zé)人實時報警,使得服務(wù)器的離線時間、異常時間減到最少。
最終,我們選用了上海哲濤科技研發(fā)的SUM(服務(wù)器集中監(jiān)控與管理平臺)來實現(xiàn)服務(wù)器(異構(gòu))和網(wǎng)絡(luò)設(shè)備的集中監(jiān)控。通過SUM,運維管理人員只需要登錄系統(tǒng)就會立即查看到哪些設(shè)備正常工作、哪些設(shè)備的哪些性能有異常。
去年國慶節(jié),技術(shù)部用手機查看服務(wù)器運行狀況,發(fā)現(xiàn)網(wǎng)站的訪問量真高,不過網(wǎng)站運行一切正常。即使宕機也不怕了,因為用手機就可以重起服務(wù)器了。
技術(shù)人員會想自己做工具,這既可滿足個人的虛榮心,又可以在短期節(jié)約成本。但從長期成本和系統(tǒng)穩(wěn)定性來看,還是買一個工具合算。
CIO頻道人物視窗
CIO頻道方案案例庫
大數(shù)據(jù)建設(shè)方案案例庫
電子政務(wù)建設(shè)方案案例庫
互聯(lián)集成系統(tǒng)構(gòu)建方案案例庫
商務(wù)智能建設(shè)方案案例庫
系統(tǒng)集成類軟件信息研發(fā)企業(yè)名錄