文章來源
??《高可用架構(第1卷)》由數十位一線架構師的實踐與經驗凝結而成,選材兼顧技術性、前瞻性與專業深度。
作者介紹
??秦迪,微博平臺及大數據技術專家,負責架構的改進工作。
背景
??作為典型的互聯網后端服務之一,微博平臺部署了大規模的基于Linux系統的集群,使用Java作為主要語言,使用了一些外部的框架比如Tomcat、Storm、Hbase等,也應用了一些自研的系統,比如RPC框架Motan、服務發現Config Service等。不同企業和行業采用的方案可能有區別,但從問題排查這個角度來說都是類似的。
問題分類
☆ known-known
就是你想要知道且已經獲取到的一些信息。比如日志業務表現、監控圖上反映出來的信息。一般來說,比較容易獲取的信息大概有以下這些。
?服務表現:問題的具體表現(出錯、超時等)、應用日志、依賴服務的狀態等。
?系統狀態:操作系統指標(系統管理的各種資源的狀態、系統日志等)、VM指標(主要是GC)。
?硬件指標:CPU、內存、網絡、硬盤是否達到瓶頸。
總結一下關于known-known類的線索:主要是在不丟失信息的情況下,對信息做定量和歸類分析,定位進一步的排查方向。
☆?known-unknown
是指你想要知道但目前還不知道的信息,一般指不能直接看到的信息。可能你會疑惑為什么會有這個分類,它跟上面有什么區別。
如何獲取這些隱藏的信息,我個人的經驗是使用工具,不管是系統還是應用都可以給我們提供很多工具,在QCon的演講里也提到了一些。無論是系統提供的,還是第三方的,或是自己開發的都可以輔助我們發現更多的線索。
關于known-unknown只強調一點:如果要做用于排查問題的工具,若一次查詢的時間超過3分鐘,那在實際排查的過程中很有可能無法發揮此工具的價值。
☆?unkonwn-unknown
在高負載系統出現的問題中,有很大一部分問題的產生原因是原先根本不了解的,比如JVM里的某個Bug,或者某些內核在實現中有一些之前聽都沒聽過的特殊機制。這個時候其實就沒有很具體的方法了,不過還是說一些思路跟大家分享一下:對于這類場景可以做減法,盡可能縮小范圍,當范圍可控之后,再去了解相應的原理。
總結
??在排查的時候大家可能會交替地遇到這幾種場景,不過只要掌握訣竅,逐個擊破就好。
本文節選自《高可用架構(第1卷)》
想及時了解曉通宏志更多資訊,請掃描網站右下角二維碼關注“曉通宏志”官方微信。