在實際的工作中,我們總是會有遇見生產環境出問題的時候。一旦出現問題。並且業務十分重要的時候。業務要求在最短時間內讓系統復原正常,這就會給人帶來很大的壓力。在這種重壓之下有可能會讓我亂了分寸茫了大腦。那我們要怎樣快速的有針對性的進行故障排錯,解決故障呢?問題是無窮的,個人覺得只有掌握了:故障排錯的思想,思維,才有助於你每次排查故障都能夠頂住壓力,能夠盡量縮短故障恢復。而且我覺得故障的排錯、恢複,就和我們生病去醫院看病有幾分相似。於是我就把“看病的思維”和“故障排錯的思想”兩者稍微結合起來分享,自己對故障排錯思想的認識。
中醫看病講究的是“望聞問切”,西醫的套路就是:抽血,化驗,看報告,治療。注重養生的人就講究平日裡的養生調理鍛煉。系統出現故障就和我們人生病了一樣。故障排錯就相當於生病去看醫生。營運的故障排錯思想就是要綜合中西醫及養生者的理論,不僅是生病時要“望聞問切”,“診斷治療”,還要講解平日裡的“養生調理”。我把這樣的一個“看病”過程拆解為:
1、平日養生、預防:日常營運規範
2、望聞問切:病灶為何?情況如何?
3、抽血化驗看報告:定點求證,找出病因
4、下藥治療:解決故障,總結反饋
5、病後調理:亡羊補牢,完善內容
注意:在故障排除過程中一定要做好系統資訊,資料,故障現場的備份工作,避免在故障排除或損毀修復過程中造成的二次傷害,就跟看病一樣同樣需要注意。本來人還活得好好的讓你一治給治死了。)
1、平日養生、預防:日常營運規範
為了更好的避免日常環境中,因為誤操作的原因或許可權濫用等原因造成生產環境的故障。營運的日常操作規則就應該制定詳細,並且要嚴於執行。很多公司雖有制定了良好的營運規則,可並沒有落實到位,那其實就相當於廢紙一張。營運規則,就相當於我們平日裡會加強鍛煉,這樣你生病的出故障)的幾率就會大大降低。平日裡的一些簡單良好的操作習慣,能夠避免很多麻煩。能夠讓你在出現故障時,減短很多系統復原的時間。比如:詳細的記錄操作資訊,許可權管控細則,營運操作習慣規則,故障緊急恢複手冊,系統&資料定時備份,相關人員的技能培訓等等都是很好的預防手段。如果這些都能夠做好的,其實是能夠減少很多不必要的麻煩。
2、望聞問切:病灶為何?情況如何?
望、聞:觀察。觀察故障的表現是什嗎?系統此時的各個狀態是什嗎?比如最直觀的可能是客服報網站訪問不了了或者是訪問網站很慢了。再或者是資料丟失了,伺服器負載過高了,流量異常了,伺服器警示了等等。這些都是故障發生時,我們需要先明確,並記錄下來的。因為此時如果連故障的最基本的表徵是什麼都不清楚的話,如何進行下一步的故障排查。至少你要清楚報錯是什麼、網站訪問是哪裡慢了,資料丟失了哪些等等。也就是說病了,你至少要說得清楚你哪裡痛哪裡癢哪來不舒服了,怎麼個不舒服法,這樣醫生才能知道你可能得了生了什麼病。
問:詢問情況。此時我們就是需要根據我們的故障表現,來有針對性的查看系統日誌、詢問相關人員最近都相應做了什麼操作,是否程式有進行了修改或設定檔做了修改。或者系統架構做了調整。詢問此前是否也有出現這種情況。有些我們可以從他人那邊得到,有些就需要我們自己通過系統記錄檔或監控資料來進行查看,擷取資訊。並且做好相應的資訊記錄。這個就相當於寫病曆一樣)這個對於我們營運故障排錯解決其實是很有協助的,因為在後續的排錯過程中,我們能夠很清楚的知道可能涉及的故障方面有哪些。而且哪些是已經排查過,或者說能從最記錄檔中判斷出來不是某個方面的原因導致的。
做好排查過程中的資訊記錄,是對我們理清整個排錯流程很有協助的。
切:定位可能的病因。利用以上我們自己收集的資訊,確定一個或多個可能出現故障的方面。硬體、網路、程式、配置、系統架構、資料庫、誤操作等等。其實很多人覺得最難的還是在這點上。個人覺得要做好這方面並不難,首先你做到了以上兩點之後,你對遇上的故障基本上都能夠有一定的基本判斷了。當然是基於對各個方面的知識有一個最基本的認識。還有一個方法就是按照常規方法“走一遍”你自己依靠純理論的,類比系統正常工作的樣子,需要經過哪些環節,比如從某個客戶的一個訪問請求開始-->用戶端的網路傳輸,伺服器的網路傳輸,-->系統的運行-->程式運行再到涉及到的各個應用程式等的運行環節。首先你能夠類比正常工作時啟動並執行各個原理部分,其次就是你一個一個環節上面給一個故障的假設,那麼從理論上推導,是否會出現於你現在出現的故障同樣的表現。如果有可能出現,那麼這個環節就是有可能出現故障的方面。此時你就需要記錄下來再你理論故障類比的推導過程中,自己覺得可能的方面。
其實這個也和看病過程是一樣的,醫生總是會根據你的病症有一個初步的診斷,其實在他們理論體系裡面就是按照一個人正常的時候是什麼樣的。如果某個地方出現病因,那麼伴隨的病症是什麼樣的,然後在同你個人出現的病情表現做對比,然後給出一個初定的診斷當然這個初定的診斷可能是多方面的。
並且這個過程是能夠通過日常工作經驗的積累,最終提高你對故障定位的敏感度。因為你所見過的可能出現的故障表現掌握越多,你越能夠依託過去的表現,找到和現在可能相似的地方,協助你定位可能的故障方面。
3、抽血化驗看報告:定點求證,找出病因
我們上醫院看病,總是先來一堆抽血化驗,最終通過報告的情況來確定我們的病因是什麼。而這堆報告的作用就是在於逐一排查可能存在的病因。或者是輔助我們排查病因。經過望聞問切之後,我們已經能夠大概的確定我們可能存在的故障方面了。接下來就是利用排查法,一項一項的進行排除,當然如果你能夠已經很直接的確定出來故障就是因為什麼導致的,那可以直接採取“治療”了。
逐一排除,定點求證。我們已確定可能的故障方面。那麼我可以利用替代,對比,監控等方法來求證是否真是這個方面出現了錯誤。比如替代:我們可以使用在其他環境上使用正常的配置或程式等來進行替換。注意:做好故障現場的備份工作)如果故障消失,那麼可以確定是替換的這方面出現了問題。如果不是接著排查其他方面。對比:讓處於同等環境下的兩台機器,一個為故障機,一個為正常機。兩者就某個相同的方面進行對比,如果一樣那麼這方面應該是屬於正確,在這方面出現故障的幾率很小。比如:處於同一個機房的兩台機器,一台故障機,一台正常機。訪問,檢測正常機的網路情況是正常的。並且故障機和正常機在網路上面的環境,所處網路,配置一樣。那麼就可以判斷出來故障出在網路方面是不太可能的。監控:對故障機的某個方面進行監控,監控從正常到故障的過程中,這個方面都發生了什麼變化。如果發現沒有發生什麼具體的變化,或者說在某個方面上面找到了變化。那麼基本上可以斷定是某方面的原因了。
通過逐一排查,定點求證,慢慢抽絲剝繭似的將可能的故障方面進行排除,最終定位到故障的原因。那麼接下來就是採取措施進行恢複了。
4、下藥治療:解決故障,總結反饋
當我們知道了我們的故障原因後,就是採取恢複措施了。注意:在進行故障恢複的時候,一定要對我們原有的系統資訊,資料,故障現場做好備份工作。因為這樣可以讓我在故障恢複失敗的時候,能夠復原回來,而且也可以幫我們在日後進行故障類比。並且在解決故障的時候,一定能夠個人私自的進行解決,一定要通過上級領導的審批,通過後再採取措施,哪怕這個動作可能很小。你都養成這個習慣。或者是通過簡單的彙報,讓領導知會此事,並同意這麼做。如果涉及到多方人員的話,如果需需要召開會議商討,那麼就召開緊急會議。或通知多方人員,你在做響應的故障恢複措施,並且告知可能會發生什麼樣的影響,影響時間等。請大家不要小看了這個部分,有時候你如果沒有協調好你本公司內部,你不會被使用者吐槽死,你就先被你其他部門的同時吐槽死了。
解決完成故障問題,一定不能忘記要及時做好故障總結彙報,彙報給你的上級,分享給網路上的同學們。
5、病後調理:亡羊補牢,完善內容
我們處理完成了我們的故障,知道了原因,寫完了彙報。那麼最後呢,就是要好好思考一下出現這個故障的根本原因是什麼,是因為許可權問題,操作問題,還是營運規範制度問題,還是因為自己的技術不過關呢,監控不到位,系統不夠自動化等等。並且針對次原因,提出一個日後有效預防,避免,甚至是杜絕的方法,並且落實起來。讓整個系統更健壯。
就像我們大病痊癒之後,也是需要好好調理身體,知道自己缺什麼,加強鍛煉,讓身體強壯起來。
PS:自己沒有什麼營運的工作經驗,所以很少遇見什麼故障。但一些網路上面的故障排錯,還是遇見不少的。個人覺得道理是相通的,所以大膽就寫了個分享。以上的拙見,和實際上有出入的地方,還望各位幫忙糾正,在此不勝感激。
本文出自 “從頭開始” 部落格,請務必保留此出處http://atong.blog.51cto.com/2393905/1349768