線上故障分析-故障分級(jí)原因分類混沌工程排除方法_第1頁(yè)
線上故障分析-故障分級(jí)原因分類混沌工程排除方法_第2頁(yè)
線上故障分析-故障分級(jí)原因分類混沌工程排除方法_第3頁(yè)
線上故障分析-故障分級(jí)原因分類混沌工程排除方法_第4頁(yè)
線上故障分析-故障分級(jí)原因分類混沌工程排除方法_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

線上故障分析-故障分級(jí),原因,分類,混沌?程,排除?法線上故障分析1?產(chǎn)故障分級(jí)規(guī)范概要1.1開(kāi)篇計(jì)算機(jī)是當(dāng)今世界的命脈,你能看到的任何地?,計(jì)算機(jī)都在改變著世界,不論是傳統(tǒng)的制造?產(chǎn),醫(yī)療通訊。還是新興的虛擬現(xiàn)實(shí),??駕駛汽車等領(lǐng)域。過(guò)去的??年,計(jì)算機(jī)硬件飛速發(fā)展,軟件領(lǐng)域也是不斷刷新著?們的想象??梢哉f(shuō),計(jì)算機(jī)學(xué)科復(fù)雜?且龐?,甚?有?說(shuō),不亞于物理學(xué)。今天我們討論的話題,線上事故分析,只是其中的?部分,??部分,為了說(shuō)清楚這?點(diǎn),我們簡(jiǎn)單了解?下軟件?程學(xué)科?,敻覃愄亍は7茽柕隆h密爾頓(英語(yǔ):MargaretHeafieldHamilton,1936年8?17?-[1])被認(rèn)為發(fā)明了軟件?程?詞。她幫助了NASA在阿波羅計(jì)劃中避免了嚴(yán)重問(wèn)題。她曾這樣說(shuō):“有點(diǎn)像?根管治療:你總是拖到最后才做,但有些事可以預(yù)先做好,有點(diǎn)像預(yù)防性體驗(yàn),只不過(guò)是預(yù)防軟件出錯(cuò)”。我們不妨簡(jiǎn)單總結(jié)如何開(kāi)發(fā)?個(gè)?型的軟件項(xiàng)?下:1-基于?向?qū)ο蟮木幊陶Z(yǔ)?2-容易使?的集成開(kāi)發(fā)環(huán)境3-?檔和注釋(程序員最討厭的兩件事,寫注釋給別?讀,閱讀別?沒(méi)有寫注釋的4-構(gòu)建管理和版本控制5-質(zhì)量保證測(cè)試(QUALITYASSURANCE-QA)每個(gè)軟件從業(yè)者從寫下第??代碼開(kāi)始,就?刻不停地和軟件中的錯(cuò)誤做?爭(zhēng)開(kāi)發(fā)和維護(hù)(修復(fù)缺陷、確保資源充?等保障軟件運(yùn)?的活動(dòng))是?對(duì)伴隨軟件運(yùn)??產(chǎn)?的雙熱愛(ài)從零到?開(kāi)發(fā)軟件是開(kāi)發(fā)者的天性看著??編寫的軟件完美運(yùn)?,為其他提供服務(wù),?直是驅(qū)動(dòng)開(kāi)發(fā)者前進(jìn)的動(dòng)?。為了更快更好地開(kāi)發(fā)軟件,我們不斷改進(jìn)開(kāi)發(fā)?法和軟件架構(gòu),但是開(kāi)發(fā)者在使?新的?法和更復(fù)雜的架構(gòu)時(shí),往往也會(huì)低估潛在的風(fēng)險(xiǎn)。本課程話題,主要討論質(zhì)量測(cè)試上線后,運(yùn)營(yíng)環(huán)節(jié)期間的?些問(wèn)題,當(dāng)然,我們暫時(shí)并不界定事故的產(chǎn)?到底是因?yàn)闇y(cè)試覆蓋不全還是操作不當(dāng)?shù)?,這某種程度體現(xiàn)著管理的?式問(wèn)題。1.2事故等級(jí)定義業(yè)務(wù)和產(chǎn)品的線上質(zhì)量、是研發(fā)團(tuán)隊(duì)的?命線,也是?撐業(yè)務(wù)快速是錯(cuò),?步跑的前置條件。1.2.1故障等級(jí)定義

故障等級(jí)定義,不同的業(yè)務(wù)形態(tài),不同的公司團(tuán)隊(duì),有不?樣的劃分標(biāo)準(zhǔn),下表列舉了?般常見(jiàn)的維度和標(biāo)準(zhǔn)【1】核?數(shù)據(jù)定義個(gè)?敏感信息:姓名、出??期、?份證件號(hào)碼、個(gè)??物識(shí)別信息、住址、通信通訊聯(lián)系?式、通信記錄和內(nèi)容、賬號(hào)密碼、財(cái)產(chǎn)信息、征信信息、?蹤軌跡、住宿信息、健康?理信息、交易信息等。?戶畫像:職業(yè)、經(jīng)濟(jì)、健康、教育、個(gè)?喜好、信?、?為等?!?】系統(tǒng)級(jí)別定義零級(jí)系統(tǒng)(P0):為公司核?業(yè)務(wù)服務(wù)的核?系統(tǒng),?旦發(fā)?不可?會(huì)直接影響公司核?業(yè)務(wù)的業(yè)務(wù)連續(xù)性,對(duì)所有系統(tǒng)?戶造成影響。?級(jí)系統(tǒng)(P1):重點(diǎn)的業(yè)務(wù)系統(tǒng),?旦發(fā)?不可?,影響核?業(yè)務(wù)的連續(xù)型,并造成?部分內(nèi)部?戶或外部?戶不可使?此系統(tǒng)。?級(jí)系統(tǒng)(P2):重要的業(yè)務(wù)系統(tǒng),?旦發(fā)?不可?存在?定的業(yè)務(wù)可?性問(wèn)題,但不會(huì)影響核?業(yè)務(wù)的業(yè)務(wù)連續(xù)性。三級(jí)系統(tǒng)(P3):?核?的?撐系統(tǒng),?旦發(fā)?故障不直接產(chǎn)?業(yè)務(wù)影響,但會(huì)影響少部分內(nèi)部?戶使?此系統(tǒng)。【3】影響范圍與故障等級(jí)1.2.2故障報(bào)告模板?例模板參考1.2.3故障響應(yīng)處理機(jī)制如圖所?,?體描述了?般?產(chǎn)故障的處理機(jī)制故障發(fā)現(xiàn):1-客戶投訴或者業(yè)務(wù)反饋,研發(fā)?我發(fā)現(xiàn)2-監(jiān)控報(bào)警:技術(shù)監(jiān)控,業(yè)務(wù)監(jiān)控1.2.4思考為什么會(huì)發(fā)?這個(gè)問(wèn)題?為什么測(cè)試階段沒(méi)有發(fā)現(xiàn)?為什么系統(tǒng)不能容錯(cuò)?能不能更早發(fā)現(xiàn)問(wèn)題?解決過(guò)程能不能更快?怎樣防?類似的事情發(fā)現(xiàn)?2?產(chǎn)故障原因和分類2.1故障分類代碼bug:上線代碼邏輯有問(wèn)題,遇到特殊情況下,導(dǎo)致故障的情況操作不當(dāng):線上配置或資源配置錯(cuò)誤,操作不當(dāng),?如啟動(dòng)順序不合理,初始化腳本不對(duì),語(yǔ)法?產(chǎn)數(shù)據(jù)隔離混?等系統(tǒng)級(jí)別軟件bug:技術(shù)架構(gòu)中使?到的任何OS,第三?類庫(kù),軟件在特殊場(chǎng)景下,bug被處罰導(dǎo)致故障的情況。突發(fā)流量:熱點(diǎn)或突發(fā)事件,引發(fā)的瞬時(shí)流量超過(guò)?常峰值或成倍增長(zhǎng),造成性能下降或功能不可?問(wèn)題資源使?不均:整體產(chǎn)品線利?率不達(dá)標(biāo),但有些業(yè)務(wù)冗余度不?,導(dǎo)致資源不能正確合理使?容量預(yù)估不?:對(duì)個(gè)別業(yè)務(wù)核?池預(yù)估不??絡(luò)類:公?擁堵、丟包、專線、?絡(luò)設(shè)備故障、ip被攻擊(包括DNS被攻擊)、IP被封、域名被封、?絡(luò)軟件BUG、業(yè)務(wù)部門使?不當(dāng)、未及時(shí)擴(kuò)容等安全類:被攻擊,漏洞被利均歸為此類局?故障:ISP,根域名服務(wù),電?,空調(diào),光纜等外部單位故障導(dǎo)致的問(wèn)題。硬件故障:任何硬件??為原因損壞導(dǎo)致的故障均歸為此類第三?合作公司或接?故障:項(xiàng)?依賴的第三?公司或接?故障2.2bug是可以完全避免的么?-了解?常項(xiàng)??中,站在開(kāi)發(fā)者的?度:?多數(shù)程序員會(huì)花費(fèi)70%-80%時(shí)間調(diào)試,?不是在寫代碼,雖然現(xiàn)在有很好的?具能極?幫助程序員防?和解決錯(cuò)誤另?個(gè)重要部分給代碼寫?檔由于現(xiàn)在的需求越來(lái)越復(fù)雜,依賴的外部條件,技術(shù)組件也是越來(lái)越多,很多bug在所難免。但也有?些bug是不能被原諒的,所以養(yǎng)成良好的開(kāi)發(fā)習(xí)慣,很重要。【bug起源】:1945年9?9?,格蕾絲·赫柏(GraceMurrayHopper)使?的MarkⅡ出現(xiàn)故障,導(dǎo)致?作?法?。經(jīng)過(guò)了近?天的檢查,格蕾絲找到了故障的原因:繼電器中有?只死掉的蛾?。蛾?被夾了出來(lái)。后來(lái),”bug”(??)和”debug”(除?)這兩個(gè)本來(lái)普普通通的詞匯成了計(jì)算機(jī)領(lǐng)域中特指莫明其妙的“錯(cuò)誤”和“排除錯(cuò)誤”的專?詞匯?流傳?今,?格蕾絲·赫柏也因此成了第?個(gè)發(fā)現(xiàn)“bug”的?。另???,?名??的"千年?"bug,也是由她帶來(lái)的。當(dāng)然,這也不全完全算作bug。2.3經(jīng)典故障?例-了解由軟件Bug引發(fā)的18次重?事故|程序師-程序員、編程語(yǔ)?、軟件開(kāi)發(fā)、編程技術(shù)()近年的CSDN600萬(wàn)?戶信息泄露事件:CSDN?站六百萬(wàn)?戶信息外泄-?光博客()2018年github服務(wù)中斷24?時(shí)11分鐘事件:GitHub服務(wù)中斷24?時(shí)11分鐘事故分析報(bào)告()2.4混沌?程簡(jiǎn)介觀念和思想來(lái)源于:【混沌?程】?書說(shuō)起混沌?程?次,也許你聽(tīng)過(guò)阿?的紅藍(lán)軍對(duì)抗?;煦?程是?種通過(guò)實(shí)驗(yàn)探究的?式來(lái)讓我們理解系統(tǒng)?為的?法,就像科學(xué)家通過(guò)實(shí)驗(yàn)來(lái)研究物理和社會(huì)現(xiàn)象?樣,混沌?程通過(guò)實(shí)驗(yàn)來(lái)了解特定的系統(tǒng)如何使?混沌?程提?系統(tǒng)彈性呢?混沌?程通過(guò)設(shè)計(jì)和執(zhí)??系列實(shí)驗(yàn),幫助我們發(fā)現(xiàn)系統(tǒng)中潛在的、可以導(dǎo)致災(zāi)難的或讓我們的?戶受損的脆弱環(huán)節(jié),推動(dòng)我主動(dòng)解決這些環(huán)節(jié)存在的問(wèn)題和現(xiàn)在各?公司主流的被動(dòng)式故障響應(yīng)流程相?,混沌?程向前邁進(jìn)了??步?;煦?程解決的問(wèn)題:要設(shè)計(jì)良好的系統(tǒng)需要考慮很多因素,?如可靠性、安全性、可擴(kuò)展性、可定制化、可伸縮性、可維護(hù)性、?戶體驗(yàn)等。為了更?效地?撐業(yè)務(wù)發(fā)展,越來(lái)越多的企業(yè)選擇基于云服務(wù)或云原?理念來(lái)構(gòu)建平臺(tái)。采?新思路和新技術(shù)必然會(huì)帶來(lái)系統(tǒng)架構(gòu)和組織結(jié)構(gòu)的變?,引?風(fēng)險(xiǎn)因素。如何通過(guò)實(shí)驗(yàn)證明?產(chǎn)環(huán)境下的分布式系統(tǒng)在?對(duì)失控條件的時(shí)候依然具備較強(qiáng)的“可觀測(cè)性”和故障恢復(fù)能?這就是混沌?程要解決的問(wèn)題?;煦?程和測(cè)試的區(qū)別:混沌?程故障注?和故障測(cè)試在側(cè)重點(diǎn)和?具集的使?上有些重疊舉個(gè)例?,Netflix的很多混沌?程實(shí)驗(yàn)的研究對(duì)象都是基于故障注?來(lái)引?的。混沌?程和其他測(cè)試?法的主要區(qū)別在于,混沌?程是發(fā)現(xiàn)新信息的實(shí)踐過(guò)程,?故障注?則是基于?個(gè)特定的條件、變址的驗(yàn)證?法?;煦?程和故障注?本質(zhì)上是思維?式上的不同。故障注??先要知道會(huì)發(fā)?什么故障,然后?個(gè)?個(gè)地注?,?在復(fù)雜分布式系統(tǒng)中,想要窮舉所有可能的故障,本?就是奢望混沌?程的思維?式是主動(dòng)去找故障,是探索性的,你不知道摘掉?個(gè)節(jié)點(diǎn)、關(guān)掉?個(gè)服務(wù)會(huì)發(fā)?什么故障,雖然按計(jì)劃做好了降級(jí)預(yù)案,但是關(guān)閉節(jié)點(diǎn)時(shí)卻引發(fā)了上游服務(wù)異常,進(jìn)?引發(fā)雪崩,這不是靠故障注?或預(yù)先計(jì)劃能發(fā)現(xiàn)的?些混沌實(shí)驗(yàn)的輸?樣例:模擬整個(gè)云服務(wù)區(qū)域或整個(gè)數(shù)據(jù)中?的故障部分刪除各種實(shí)例上的Kafka主題。重新創(chuàng)建?產(chǎn)中發(fā)?的問(wèn)題。針對(duì)特定百分?的交易服務(wù)之間注??段預(yù)期的訪問(wèn)延遲?;诤瘮?shù)的混亂(運(yùn)?時(shí)注?):隨機(jī)導(dǎo)致拋出異常的函數(shù)。代碼插?:向?標(biāo)程序添加指令和允許在某些指令之前進(jìn)?故障注?。時(shí)間旅?:強(qiáng)制系統(tǒng)時(shí)鐘彼此不同步。在模擬I/O錯(cuò)誤的驅(qū)動(dòng)程序代碼中執(zhí)?例程。在Elasticsearch集群上最?化CPU核??;煦?程實(shí)驗(yàn)的機(jī)會(huì)是?限的,可能會(huì)根據(jù)分布式系統(tǒng)的架構(gòu)和組織的核?業(yè)務(wù)價(jià)值?有所不同混沌?程實(shí)現(xiàn)的四個(gè)步驟:1.定義并測(cè)量系統(tǒng)的“穩(wěn)定狀態(tài)”。?先精確定義指標(biāo),表明您的系統(tǒng)按照應(yīng)有的?式運(yùn)?。Netflix使?客戶點(diǎn)擊視頻流設(shè)備上播放按鈕的速率作為指標(biāo),稱為“每秒流量”。請(qǐng)注意,這更像是商業(yè)指標(biāo)??技術(shù)指標(biāo);事實(shí)上,在混沌?程中,業(yè)務(wù)指標(biāo)通常?技術(shù)指標(biāo)更有?,因?yàn)樗鼈兏m合衡量?戶體驗(yàn)或運(yùn)營(yíng)。2.創(chuàng)建假設(shè)。與任何實(shí)驗(yàn)?樣,您需要?個(gè)假設(shè)來(lái)進(jìn)?測(cè)試。因?yàn)槟阍噲D破壞系統(tǒng)正常運(yùn)?時(shí)的穩(wěn)定狀態(tài),你的假設(shè)將是這樣的,“當(dāng)我們做X時(shí),這個(gè)系統(tǒng)的穩(wěn)定狀態(tài)應(yīng)該沒(méi)有變化。”為什么?這種?式表達(dá)?如果你的期望是你的動(dòng)作會(huì)破壞系統(tǒng)的穩(wěn)定狀態(tài),那么你會(huì)做的第?件事會(huì)是修復(fù)問(wèn)題?;煦?程應(yīng)該包括真正的實(shí)驗(yàn),涉及真正的未知數(shù)。3.模擬現(xiàn)實(shí)世界中可能發(fā)?的事情,?前有如下混沌?程實(shí)踐?法:模擬數(shù)據(jù)中?的故障、強(qiáng)制系統(tǒng)時(shí)鐘不同步、在驅(qū)動(dòng)程序代碼中模擬I/O異常、模擬服務(wù)之間的延遲、隨機(jī)引發(fā)函數(shù)拋異常。通常,您希望模擬可能導(dǎo)致系統(tǒng)不可?或?qū)е缕湫阅芙档偷膱?chǎng)景。?先考慮可能出現(xiàn)什么問(wèn)題,然后進(jìn)?模擬。?定要優(yōu)先考慮潛在的錯(cuò)誤。“當(dāng)你擁有?常復(fù)雜的系統(tǒng)時(shí),很容易引起出乎意料的下游效應(yīng),這是混沌?程尋找的結(jié)果之?,”“因此,系統(tǒng)越復(fù)雜,越重要,它就越有可能成為混沌?程的候選對(duì)象?!?.證明或反駁你的假設(shè)。將穩(wěn)態(tài)指標(biāo)與?擾注?系統(tǒng)后收集的指標(biāo)進(jìn)??較。如果您發(fā)現(xiàn)測(cè)量結(jié)果存在差異,那么您的混沌?程實(shí)驗(yàn)已經(jīng)成功-您現(xiàn)在可以繼續(xù)加固系統(tǒng),以便現(xiàn)實(shí)世界中的類似事件不會(huì)導(dǎo)致?問(wèn)題。或者,如果您發(fā)現(xiàn)穩(wěn)定狀態(tài)可以保持,那么你對(duì)該系統(tǒng)的穩(wěn)定性?可放?。引?混沌?程的?些建議:來(lái)源于-周洋(花名:中亭)-阿?巴巴?可?架構(gòu)團(tuán)隊(duì)?級(jí)技術(shù)專家第?,引?混沌?程,需要建?進(jìn)??向失敗設(shè)計(jì)(可以使系統(tǒng)暴露出已有問(wèn)題的設(shè)計(jì))和擁抱失敗的技術(shù)?化第?,實(shí)施混沌?程,需要定義?個(gè)清晰可衡量的?標(biāo)。第三,推?混沌?程,要在控制風(fēng)險(xiǎn)的前提下不斷提升效率。混沌?程是?種實(shí)踐思想,其本?是不綁定任何技術(shù)或?具的。減少問(wèn)題的最好?法就是讓問(wèn)題經(jīng)常性地發(fā)?,通過(guò)不斷重復(fù)失敗過(guò)程并找出解決?案,來(lái)持續(xù)提升系統(tǒng)的容錯(cuò)能?和彈性?;煦?程?具3?產(chǎn)故障定位和解決流程3.1影響服務(wù)質(zhì)量的因素3.1.1我們常常?對(duì)如下的業(yè)務(wù)場(chǎng)景

?量??業(yè)務(wù)邏輯sleep循環(huán)?寫查詢磁盤滿了、影響到有磁盤寫操作的接?慢查詢的SQLRedis中存在?key,帶寬打滿不知是哪些接?影響與被影響隊(duì)列堆積卻不知哪些接?影響流量放?系數(shù)評(píng)估全靠經(jīng)驗(yàn)和看代碼3.1.2資源依賴接?依賴(內(nèi)部服務(wù)、外部服務(wù))?法整體查看服務(wù)、接?、資源之間的依賴關(guān)系沒(méi)有很好的外部服務(wù)監(jiān)控機(jī)制、?法統(tǒng)計(jì)依賴的服務(wù)質(zhì)量數(shù)據(jù)資源依賴(DB、Redis、Memcached、隊(duì)列)?法整體查看服務(wù)、接?、資源之間的依賴關(guān)系容量評(píng)估及擴(kuò)容標(biāo)準(zhǔn)全靠經(jīng)驗(yàn)出問(wèn)題后僅能憑經(jīng)驗(yàn)逐?排查、?法迅速定位到代碼層?完全依賴dba幫忙排查服務(wù)器資源依賴(負(fù)載、內(nèi)存、?絡(luò)······)資源指標(biāo)上升后、?法判斷數(shù)值是常規(guī)上升還是資源異常3.1.3流量?流量來(lái)襲時(shí)、?法整體感知流量狀況流量多?算??核?業(yè)務(wù)是否收到影響?單?接?流量增加卻未達(dá)到整體的告警線、導(dǎo)致?法感知可視化是否實(shí)時(shí)?法直觀統(tǒng)計(jì)流量分布、?法查看具體每個(gè)接?的流量情況容量評(píng)估時(shí)、流量放?系數(shù)全靠?為判斷、對(duì)服務(wù)整體的放?系數(shù)?感知3.2故障發(fā)現(xiàn)?個(gè)?可?的業(yè)務(wù)系統(tǒng)除了技術(shù)架構(gòu)?撐之外,監(jiān)控系統(tǒng)作為事中決策?撐和事后決策?損是必不可少的?部分?具:Prometheus、Zabbix、Nagios、Open-Falcon、Pageduty等3.2.1監(jiān)控體系匯總監(jiān)控體系分類:?般可分為:業(yè)務(wù)監(jiān)控,系統(tǒng)級(jí)別監(jiān)控,?絡(luò)監(jiān)控,程序代碼監(jiān)控,?志監(jiān)控,?戶?為分析監(jiān)控,其他種類監(jiān)控等系統(tǒng)級(jí)別監(jiān)控:主要跟操作系統(tǒng)相關(guān)的基本監(jiān)控項(xiàng)物理監(jiān)控(對(duì)物理機(jī)或者容器的監(jiān)控):存活、內(nèi)存、cpu、load、硬盤(速率、使?率)、?絡(luò)活性檢測(cè):進(jìn)程、端?應(yīng)?服務(wù)監(jiān)控:jvm、gc、線程數(shù)服務(wù)監(jiān)控:rpc和http接?的qps、rt、錯(cuò)誤碼等業(yè)務(wù)監(jiān)控:包含?戶訪問(wèn)的QPS,DAU,訪問(wèn)狀態(tài)(http狀態(tài)碼),業(yè)務(wù)接?(登錄,注冊(cè),聊天,送禮,留?,下單,?付,播放按鈕點(diǎn)擊率,搜索次數(shù),好評(píng)差評(píng)數(shù)等等),產(chǎn)品轉(zhuǎn)化率,充值額度,客訴等很宏觀的概念1-基礎(chǔ)業(yè)務(wù)監(jiān)控交易運(yùn)營(yíng)數(shù)據(jù)業(yè)務(wù)監(jiān)控?定義數(shù)據(jù)2-業(yè)務(wù)監(jiān)控的發(fā)展1-業(yè)務(wù)監(jiān)控設(shè)置靜態(tài)閾值?法滿?要求閾值應(yīng)該配成多少,不同的業(yè)務(wù)甚?不同的時(shí)間段都需要不同的閾值業(yè)務(wù)總是出現(xiàn)周期性的趨勢(shì),規(guī)則配置極易產(chǎn)?誤報(bào)特殊的業(yè)務(wù)場(chǎng)景例如活動(dòng)引起的沖?回落、?促的沖擊都會(huì)引起?量誤報(bào)對(duì)?量維度的業(yè)務(wù),?如要監(jiān)控外部千萬(wàn)級(jí)別的商戶、上百個(gè)不同類型的錯(cuò)誤碼該如何配置2-我們要根據(jù)業(yè)務(wù)特征和歷史數(shù)據(jù)?成動(dòng)態(tài)閾值,?動(dòng)化報(bào)警,及時(shí)發(fā)現(xiàn)故障3-業(yè)界產(chǎn)品:?付寶lego阿?媽媽goldeneye4-?般架構(gòu)圖?絡(luò)監(jiān)控IDC,對(duì)?絡(luò)狀態(tài)的監(jiān)控(交換機(jī)、路由器、防?墻,vpn)對(duì)于?個(gè)互聯(lián)?公司必不可少,但是有很多時(shí)候?被忽略:例如:內(nèi)?之間(物理內(nèi)?,邏輯內(nèi)?),外?,丟包率,?絡(luò)重傳,延遲等等?志監(jiān)控?志監(jiān)控?較重要,所以?般單獨(dú)管理和分類,?志不僅限于服務(wù)系統(tǒng)?志,對(duì)于很多專業(yè)化的運(yùn)維?程師來(lái)說(shuō),需要采集的包括系統(tǒng)?志,設(shè)備?志,?戶?為?志等等,后續(xù)可加?處理,(splunk,ELK)常?監(jiān)控圖?鏈路監(jiān)控中間件監(jiān)控:異常監(jiān)控:當(dāng)前排除故障的流程【項(xiàng)?背景】?前公司線上業(yè)務(wù),經(jīng)常遇到以下?種問(wèn)題:1.由于環(huán)境的隔離,導(dǎo)致?法從本地開(kāi)發(fā)環(huán)境訪問(wèn)線上環(huán)境,故?遇到問(wèn)題,?法使?IDE遠(yuǎn)程調(diào)試應(yīng)?程序。2.為了線上業(yè)務(wù)的正常運(yùn)作,所以不能在?產(chǎn)中調(diào)試,防?因調(diào)試導(dǎo)致所有線程不可?,從?影響線上業(yè)務(wù)。3.不同環(huán)境,參數(shù)不同,重現(xiàn)問(wèn)題難。?旦我們?cè)?產(chǎn)中檢測(cè)到問(wèn)題,我們必須:1.回滾到穩(wěn)定版本。2.在?志和代碼中搜索錯(cuò)誤和異常。3.添加log?志,創(chuàng)建新的修補(bǔ)程序版本。4.提交測(cè)試,等待測(cè)試和發(fā)布(有可能數(shù)天)。5.部署預(yù)發(fā),獲取詳細(xì)?志,驗(yàn)證問(wèn)題。6.發(fā)布新版本到線上。完成上述步驟,有的故障甚?持續(xù)數(shù)天,效率?常低下故障診斷跟蹤系統(tǒng)因此產(chǎn)?,其實(shí)縱觀計(jì)算機(jī)科學(xué)的發(fā)展,也是需求促使著新技術(shù)不斷被發(fā)明,?在?層?層的技術(shù)之上建?新的抽象。以京東的JEX平臺(tái)為例功能:1.?動(dòng)捕獲程序中發(fā)?的異常事件2.?動(dòng)保存異常發(fā)?時(shí)的完整調(diào)?棧(callstack)3.?動(dòng)保存異常發(fā)?時(shí)的變量值4.?動(dòng)關(guān)聯(lián)相關(guān)源代碼和變量異常退棧:JEX:保存了異常的DEBUG和TRACE信息3.3線上排除故障3.3.1故障排除?法上?節(jié),我們有提到,故障排除的?般流程,不妨在此再次總結(jié)如下:1.回滾到穩(wěn)定版本。2.在?志和代碼中搜索錯(cuò)誤和異常。3.添加log?志,創(chuàng)建新的修補(bǔ)程序版本。4.提交測(cè)試,等待測(cè)試和發(fā)布(數(shù)天)。5.部署預(yù)發(fā),獲取詳細(xì)?志,驗(yàn)證問(wèn)題。6.發(fā)布新版本到線上。另外,別忘了?個(gè)很重要的?法:重啟服務(wù)3.3.2故障排除?般需要掌握的技能-?具篇1-?般情況下,需要了解業(yè)務(wù)場(chǎng)景,千萬(wàn)不要第?時(shí)間著急解決bug,應(yīng)先評(píng)斷是否可以回滾,影響???,是否為上層提供服務(wù),是否有數(shù)據(jù)異常。2-應(yīng)熟悉項(xiàng)?依賴的監(jiān)控,學(xué)會(huì)看監(jiān)控。3-應(yīng)熟練開(kāi)發(fā)環(huán)境的斷點(diǎn)排查與診斷,熟悉git,maven,idea的使?,分析如何復(fù)現(xiàn)線上故障。4-線上排查故障的?具鏈(僅供參考)-隨著課程慢慢補(bǔ)齊IDEA斷點(diǎn)?階1.window快捷鍵:所在?處:Ctrl+F8斷點(diǎn)屬性編輯:Ctrl+Shift+F82.斷點(diǎn)類型與設(shè)置?斷點(diǎn)(linebreakpoints)在到達(dá)設(shè)置斷點(diǎn)的代碼?時(shí)暫停程序。這種類型的斷點(diǎn)可以設(shè)置在任何可執(zhí)?的代碼?上。該類型斷點(diǎn)的圖標(biāo):字段斷點(diǎn)(fieldbreakpoints)當(dāng)指定的字段被讀取或?qū)?時(shí)暫停程序。這允許你對(duì)與特定實(shí)例變量的交互作出反應(yīng)。例如,如果在?個(gè)復(fù)雜的過(guò)程結(jié)束時(shí),你的某個(gè)字段出現(xiàn)了明顯的錯(cuò)誤值,設(shè)置?個(gè)字段觀察點(diǎn)可能有助于確定故障的來(lái)源。該類型斷點(diǎn)的圖標(biāo):?標(biāo)右鍵點(diǎn)擊該斷點(diǎn)圖標(biāo),彈出該斷點(diǎn)配置,會(huì)有Fieldaccess和Fieldmodification選項(xiàng),此選項(xiàng)是字段類型斷點(diǎn)特有的,分別對(duì)應(yīng)訪問(wèn)該字段或修改該字段觸發(fā)斷點(diǎn),兩項(xiàng)同時(shí)選中,則訪問(wèn)與修改該字段都會(huì)觸發(fā)斷點(diǎn)。?法斷點(diǎn)(methodbreakpoints)在進(jìn)?或退出指定的?法或其實(shí)現(xiàn)之?時(shí)暫停程序,允許你檢查該?法的進(jìn)?/退出條件。該類型斷點(diǎn)的圖標(biāo):當(dāng)斷點(diǎn)加在class類名這??,且該類中沒(méi)有編寫構(gòu)造函數(shù)(只有默認(rèn)?參構(gòu)造函數(shù)),當(dāng)?默認(rèn)?參構(gòu)造函數(shù)時(shí)會(huì)觸發(fā)此斷點(diǎn),程序掛起,故該斷點(diǎn)雖然圖標(biāo)是?斷點(diǎn)類型圖標(biāo),但實(shí)際上屬于?法類型斷點(diǎn)。?標(biāo)右鍵點(diǎn)擊該斷點(diǎn)圖標(biāo),彈出該斷點(diǎn)配置,會(huì)有Emulated、Methodentry、Methodexit選項(xiàng),此選項(xiàng)是?法類型斷點(diǎn)特有的。Emulated勾選中,會(huì)將?法斷點(diǎn)優(yōu)化成?法中第?條和最后?條語(yǔ)句的?斷點(diǎn),這樣會(huì)優(yōu)化調(diào)試的性能,因此在IDE中會(huì)默認(rèn)選中,通過(guò)匹配符批量添加?法斷點(diǎn),在斷點(diǎn)列表頁(yè)匹配符?例:異常斷點(diǎn)(Exceptionbreakpoints)異常斷點(diǎn)分為兩種,?種是AnyException,任意Throwable異常被捕獲或未被捕獲就會(huì)觸發(fā)斷點(diǎn),另?種是指定類型的異常及其該異常?類被捕獲或未被捕獲會(huì)觸發(fā)斷點(diǎn),該類型斷點(diǎn)圖標(biāo)?標(biāo)右鍵點(diǎn)擊該斷點(diǎn)圖標(biāo),彈出該斷點(diǎn)配置,會(huì)有Caughtexception和Uncaughtexception選項(xiàng),此選項(xiàng)是字段類型斷點(diǎn)特有的,Caughtexception選項(xiàng)選中時(shí),當(dāng)指定的異常被捕獲時(shí),觸發(fā)斷點(diǎn)程序掛起,Uncaughtexception選中時(shí),當(dāng)指定的異常未被捕獲時(shí),觸發(fā)斷點(diǎn)程序掛起3.斷點(diǎn)控制斷點(diǎn)刪除1-所有類型斷點(diǎn):斷點(diǎn)設(shè)置中移除對(duì)應(yīng)的即可。2-快捷移除:?位置?標(biāo)左鍵單擊即可移除(異常斷點(diǎn)除外)建議:為了避免意外刪除斷點(diǎn)并丟失其參數(shù),通常選擇點(diǎn)擊?標(biāo)中鍵來(lái)刪除斷點(diǎn)。要做到這?點(diǎn),請(qǐng)進(jìn)?“設(shè)置/?選項(xiàng)”|“構(gòu)建、執(zhí)?、部署”|“調(diào)試器”,選擇"拖到編輯器"或??標(biāo)中鍵點(diǎn)擊。點(diǎn)擊?個(gè)斷點(diǎn)將啟?或禁?它。斷點(diǎn)靜?如果某些時(shí)候不需要在斷點(diǎn)處停留?段時(shí)間,可以將斷點(diǎn)靜?。這樣就可以在不離開(kāi)調(diào)試器會(huì)話的情況下恢復(fù)正常的程序操作。之后,可以解除中斷點(diǎn)的靜?,繼續(xù)調(diào)試。斷點(diǎn)靜?會(huì)靜?所有斷點(diǎn)在斷點(diǎn)調(diào)試窗?,點(diǎn)擊斷點(diǎn)靜?按鈕啟?/禁?斷點(diǎn)正常通過(guò)斷電刪除的斷點(diǎn),會(huì)連同當(dāng)時(shí)斷點(diǎn)的內(nèi)部所有配置?并刪除。如果想暫時(shí)關(guān)閉?個(gè)斷點(diǎn),后續(xù)可能還會(huì)使?,這是?個(gè)很好的選擇同斷點(diǎn)刪除操作斷點(diǎn)移動(dòng)/復(fù)制斷點(diǎn)移動(dòng):?標(biāo)左鍵拖動(dòng)斷點(diǎn)復(fù)制:按住ctrl,?標(biāo)左鍵拖動(dòng)4.斷點(diǎn)屬性配置?標(biāo)操作:右鍵斷點(diǎn):More(Ctrl+Shift+F8)快捷鍵:Ctrl+Shift+F8快捷鍵:光標(biāo)所在?Alt+Enter斷點(diǎn)有許多屬性配置,如下圖所?,下?將會(huì)對(duì)各個(gè)屬性的作?以及使?進(jìn)?說(shuō)明。Enabled表?是否啟?該斷點(diǎn),選中表?啟?,取消選中表?不啟?。Supend當(dāng)斷點(diǎn)的Suppend屬性被勾選,觸發(fā)該斷點(diǎn)時(shí),會(huì)觸發(fā)程序掛起,當(dāng)該屬性未選中時(shí),程序觸發(fā)該斷點(diǎn)時(shí),程序不會(huì)掛起,常?于輸出?些表達(dá)式結(jié)果?志。當(dāng)斷點(diǎn)的All屬性被勾選,觸發(fā)該斷點(diǎn)時(shí),會(huì)掛起所有線程當(dāng)斷點(diǎn)的Thead屬性被勾選,觸發(fā)該斷點(diǎn)時(shí),只會(huì)掛起觸發(fā)該斷點(diǎn)的那個(gè)線程,不影響其他線程當(dāng)需要在不暫停程序的情況下記錄?些表達(dá)式時(shí)(例如,需要知道?個(gè)?法被調(diào)?了多少次時(shí)),或者需要?jiǎng)?chuàng)建?個(gè)主斷點(diǎn),在擊中后啟?附屬斷點(diǎn)時(shí),?暫停性斷點(diǎn)是?常有?的。實(shí)際?產(chǎn)實(shí)踐中,可?于調(diào)試多線程并發(fā)的問(wèn)題Condition可以輸??段能獲得true或false的表達(dá)式,程序運(yùn)?到斷點(diǎn)處,且表達(dá)式條件為true才會(huì)觸發(fā)斷點(diǎn)Log下?三個(gè)屬性選項(xiàng)經(jīng)常配合Suppend屬性?起使?,?于在不掛起的情況下,輸出?些想要的?志信息Breakpinthitmessage:控制臺(tái)輸出觸發(fā)端點(diǎn)的?志信息,類似如:Breakpointreachedatocean.Whale.main(Whale.java:5)Stacktrace:輸出觸發(fā)斷點(diǎn)時(shí)的堆棧信息Evaluateandlog:計(jì)算表達(dá)式結(jié)果并輸出表達(dá)式結(jié)果到控制臺(tái),表達(dá)式的計(jì)算基于斷點(diǎn)所在?的上?下,表達(dá)式的語(yǔ)句可以是字符串字?量,如“我是字符串”,也可以是?法調(diào)?,如users.size(),也可以是多?語(yǔ)句塊,表達(dá)式的結(jié)果取?return語(yǔ)句,如果沒(méi)有return語(yǔ)句,會(huì)取表達(dá)式中的最后??語(yǔ)句。Removeoncehit是否在斷點(diǎn)觸發(fā)后移除該斷點(diǎn),后續(xù)不在觸發(fā)Disableuntilhittingthefollowingbreakpoint指定在另?個(gè)斷點(diǎn)觸發(fā)后,該斷點(diǎn)才啟?,若該斷點(diǎn)啟?后,并且被觸發(fā),場(chǎng)景:當(dāng)只需要在某些條件下或某些操作后暫停程序時(shí),這個(gè)選項(xiàng)很有?。在這種情況下,觸發(fā)斷點(diǎn)通常不需要停?程序的執(zhí)?,?是做成?暫停狀態(tài)。Filters前邊說(shuō)的?都數(shù)屬性,都只針對(duì)?法程序運(yùn)?上下?。此屬性更多關(guān)注通過(guò)過(guò)濾掉類、實(shí)例和調(diào)?者?法來(lái)微調(diào)斷點(diǎn)操作,只在需要時(shí)暫停程序。,有如下?種過(guò)濾?式:Catchclassfilters:此選項(xiàng)只對(duì)異常類型的斷點(diǎn)可?,可以讓程序只在指定類和?類中拋出的異常才會(huì)觸發(fā)斷點(diǎn)或者不在指定的類和?類中觸發(fā)斷點(diǎn)(即排除?些類,排除通常以-開(kāi)始,例如-pacakge.ClassName),Instancefilters:只有指定實(shí)例id號(hào)可以觸發(fā)斷點(diǎn),多個(gè)實(shí)例id號(hào)以逗號(hào)隔開(kāi),實(shí)例id號(hào)可以在Variables和Memory?板中查看Classfilters:可以讓程序只在指定類和?類中才會(huì)觸發(fā)斷點(diǎn)或者不在指定的類和?類中觸發(fā)斷

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論