線上問題處理步驟:發(fā)現(xiàn)問題->快速恢復->定位與修復->方法論-為故障和失敗做設計
需關(guān)注的系統(tǒng)參數(shù):
應用層:接口響應時間地啰,qps,并發(fā)數(shù)
軟件層:jvm,DB策彤,緩存
系統(tǒng)層:CPU栓袖,內(nèi)存,IO
1.發(fā)現(xiàn)問題:人肉主動發(fā)現(xiàn)->生產(chǎn)事件上報->關(guān)聯(lián)系統(tǒng)故障追溯->業(yè)務監(jiān)控報警->系統(tǒng)監(jiān)控報警
2.快速恢復:驗證->排查解決->恢復服務->保留現(xiàn)場
3.定位與修復:
常規(guī)操作:重啟店诗,回滾裹刮,降級,摘機
特殊場景:無法定位故障
原則:確保線上服務快速恢復庞瘸,不能完全恢復的情況下捧弃,確保線上服務盡可能少的受到影響
手段:
1)服務降級:定位到服務異常,但不清楚異常原因擦囊,直接降級該服務违霞,確保其他服務不受影響
2)服務緊急擴容:服務器資源飆升但無法定位到問題時,緊急擴容服務器(可能為惡意攻擊瞬场,促銷活動买鸽,秒殺等情況)
3)回退版本:有新版本發(fā)布,但是不能確定故障是否和新版本有關(guān)系贯被,先回退到上一個穩(wěn)定版本
保留現(xiàn)場
1)執(zhí)行top命令眼五,觀察Cpus-ids(CPU的空閑程度),值過低時,shift+P按使用率倒排彤灶,記錄最耗資源的進程信息
2)執(zhí)行free -m命令看幼,觀察cache行free列的值,值過低是枢希,執(zhí)行top命令桌吃,shift+m按內(nèi)存使用量倒排,記錄最耗資源的進程信息
3)對耗資源進程執(zhí)行ps xuf| grep pid命令,打印進程具體信息并記錄
4)執(zhí)行jstack pid打印日志苞轿,取多組方便比較
5)執(zhí)行jstat -gcutil查看Old區(qū)占用率茅诱,若達到或接近100%,則執(zhí)行jmap -histo pid
常見故障原因
問題排查常用命令:
CPU:top -Hp
內(nèi)存:free -m
IO: iostat
磁盤:df -h
網(wǎng)絡連接:netstat
GC:jstat -gcutil(建議重點了解)
線程:jstack
內(nèi)存:jmap
輔助工具:MAT搬卒,btrace瑟俭,jprofile
4.方法論
系統(tǒng)資源的異常現(xiàn)象:cpu飆高&內(nèi)存不足&磁盤IO高&網(wǎng)絡連接高
服務內(nèi)部的異称跹現(xiàn)象:OOM&異常日志&疑難雜癥(死鎖摆寄、死循環(huán)、等待外部響應)
5.為故障和失敗做設計
1)故障發(fā)生時盡可能維持系統(tǒng)核心功能的可用性
2)依賴模型&依賴治理
3)超時機制(系統(tǒng)超時、網(wǎng)絡超時微饥、Fail fast)
4) 回退機制
5)熔斷器