線上問(wèn)題系統(tǒng)性定位處理方法論

線上問(wèn)題處理步驟:發(fā)現(xiàn)問(wèn)題->快速恢復(fù)->定位與修復(fù)->方法論-為故障和失敗做設(shè)計(jì)

需關(guān)注的系統(tǒng)參數(shù):

應(yīng)用層:接口響應(yīng)時(shí)間,qps,并發(fā)數(shù)

軟件層:jvm,DB,緩存

系統(tǒng)層:CPU,內(nèi)存,IO

1.發(fā)現(xiàn)問(wèn)題:人肉主動(dòng)發(fā)現(xiàn)->生產(chǎn)事件上報(bào)->關(guān)聯(lián)系統(tǒng)故障追溯->業(yè)務(wù)監(jiān)控報(bào)警->系統(tǒng)監(jiān)控報(bào)警

2.快速恢復(fù):驗(yàn)證->排查解決->恢復(fù)服務(wù)->保留現(xiàn)場(chǎng)

3.定位與修復(fù):

常規(guī)操作:重啟,回滾,降級(jí),摘機(jī)


圖1:現(xiàn)象收集&故障定位


圖2:故障排除&服務(wù)恢復(fù)

特殊場(chǎng)景:無(wú)法定位故障

原則:確保線上服務(wù)快速恢復(fù),不能完全恢復(fù)的情況下,確保線上服務(wù)盡可能少的受到影響

手段:

1)服務(wù)降級(jí):定位到服務(wù)異常,但不清楚異常原因,直接降級(jí)該服務(wù),確保其他服務(wù)不受影響

2)服務(wù)緊急擴(kuò)容:服務(wù)器資源飆升但無(wú)法定位到問(wèn)題時(shí),緊急擴(kuò)容服務(wù)器(可能為惡意攻擊,促銷活動(dòng),秒殺等情況)

3)回退版本:有新版本發(fā)布,但是不能確定故障是否和新版本有關(guān)系,先回退到上一個(gè)穩(wěn)定版本

保留現(xiàn)場(chǎng)

1)執(zhí)行top命令,觀察Cpus-ids(CPU的空閑程度),值過(guò)低時(shí),shift+P按使用率倒排,記錄最耗資源的進(jìn)程信息

2)執(zhí)行free -m命令,觀察cache行free列的值,值過(guò)低是,執(zhí)行top命令,shift+m按內(nèi)存使用量倒排,記錄最耗資源的進(jìn)程信息

3)對(duì)耗資源進(jìn)程執(zhí)行ps xuf| grep pid命令,打印進(jìn)程具體信息并記錄

4)執(zhí)行jstack pid打印日志,取多組方便比較

5)執(zhí)行jstat -gcutil查看Old區(qū)占用率,若達(dá)到或接近100%,則執(zhí)行jmap -histo pid

常見(jiàn)故障原因


圖3-常見(jiàn)故障原因


圖4-故障畫(huà)像

問(wèn)題排查常用命令:

CPU:top -Hp

內(nèi)存:free -m

IO: iostat

磁盤(pán):df -h

網(wǎng)絡(luò)連接:netstat

GC:jstat -gcutil(建議重點(diǎn)了解)

線程:jstack

內(nèi)存:jmap

輔助工具:MAT,btrace,jprofile

4.方法論

系統(tǒng)資源的異常現(xiàn)象:cpu飆高&內(nèi)存不足&磁盤(pán)IO高&網(wǎng)絡(luò)連接高

服務(wù)內(nèi)部的異?,F(xiàn)象:OOM&異常日志&疑難雜癥(死鎖、死循環(huán)、等待外部響應(yīng))


圖5:逐步排查

5.為故障和失敗做設(shè)計(jì)

1)故障發(fā)生時(shí)盡可能維持系統(tǒng)核心功能的可用性

2)依賴模型&依賴治理

3)超時(shí)機(jī)制(系統(tǒng)超時(shí)、網(wǎng)絡(luò)超時(shí)、Fail fast)

4) 回退機(jī)制

5)熔斷器

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容