溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么排查線上故障

發(fā)布時間:2021-10-21 16:40:56 來源:億速云 閱讀:176 作者:iii 欄目:編程語言

這篇文章主要介紹“怎么排查線上故障”,在日常操作中,相信很多人在怎么排查線上故障問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么排查線上故障”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

前言

說起線上故障,程序員應該都經歷過,從故障處理恢復過程中我們能快速提高。踩坑多了,慢慢也就成了大牛。這道題也是大廠的面試官們特別喜歡問的問題之一,從候選人對這道題的回答過程中,面試官至少能獲取到兩個方面的反饋。第一是你平時負責的項目是不是核心項目,如果你說你負責的是后管系統(tǒng),出了問題重啟就OK了,那結果只能是出門右轉了。第二是候選人系統(tǒng)化處理問題的能力。你是如何快速止血;如何一步步快速定位到具體問題;故障前的準備工作是否充分,風險點有沒有緊急應對方案。

下面我們就一起來聊聊線上故障的排查過程

快速止血

在分布式系統(tǒng)環(huán)境中,最重要的就是快速止血。在互聯(lián)網公司呆過的同學知道,恐怖的復盤大會往往第一個問題就是為什么故障花了半個小時,業(yè)務都投訴了才知道。或者是為什么花了15分鐘才知道是慢SQL問題,被按在地上摩擦的不要不要的。

原因是在分布式系統(tǒng)中,故障很容易產生“多米諾骨牌效應”。比如一個基建服務因為一個慢sql導致請求響應變慢,就會導致上游的請求堆積,線程無法釋放,進而導致上線的系統(tǒng)也變的很慢,出現(xiàn)大量error。這個雪崩過程有時候很快,到時候測試,運維,上游系統(tǒng)的負責人在各種電話,信息轟炸你的時候,這時候的你肯定是

怎么辦?如果問題定位了很長時間還沒定位到,那就只能先用殺手锏了:

  • 重啟 系統(tǒng)不可用時先重啟,先保證系統(tǒng)的可用性,具體功能問題還要繼續(xù)定位,重啟幾分鐘又出現(xiàn)大量error就尷尬了

  • 限流 重要接口要提前準備好限流配置,隨便可以動態(tài)更改接口QPS

  • 線上回滾 如果前一天剛有上線動作,那十有八九就是上線導致的,這種情況如果問題暫時沒排查出來可以先回滾,然后組織一堆人去扒新提交的代碼吧

  • 緊急擴容 首先服務必須是無狀態(tài)的,支持動態(tài)擴展,而且瓶頸必須在應用服務,如果瓶頸在DB或者在別的地方也沒辦法

故障排查過程

前面說到如果前一天有上線,然后出現(xiàn)故障回滾了,這種情況十有八九是回歸測試不徹底,影響之前的邏輯了,最壞情況就是一堆人一行行去扒代碼。現(xiàn)在我們討論的是如果生產服務變得很慢,error告警不斷增加的情況下怎么處理?

  • 服務監(jiān)控 系統(tǒng)高可用設計手段中很重要的一條就是服務監(jiān)控 ,系統(tǒng)上線了不能裸奔,不然怎么死的都不知道。安利一下美團開源的CAT監(jiān)控系統(tǒng),CAT能實時監(jiān)控各個指標,各個鏈路事件。包括服務器的CPU負載,JVM內存,GC信息,線程信息,慢URL,慢SQL,請求響應耗時平均線、95線、99線,以及配置單位時間內多少服務error告警等。

怎么排查線上故障

  • 故障排查命令 面試官經常喜歡問候選者線上故障有哪些排查命令,怎么去排查的。一般是先整體后局部的順序來排查

1.查詢整機 首先通過top命令查看整體情況,比較重要的指標有Load AVg,CPU usage,每個進程的CPU和MEM。
怎么排查線上故障
也可以通過uptime查看精簡版
怎么排查線上故障

2.CPU 通過vmstat工具查詢CPU的情況,vmstat包含兩個參數(shù),第一個參數(shù)是采樣隔間時間,但是是秒,第二個參數(shù)是采樣次數(shù)。如:

vmstat -n 2 3

表示每隔2秒采樣一次,一共采樣3次

怎么排查線上故障

  1. proces

  • r 運行和等待CPU時間片的進程數(shù)

  • b 等待資源的進程數(shù)

  1. cpu

  • us 用戶進程消耗CPU時間百分比,如果長期大于50%,可能存在CPU泄漏的危險,需要優(yōu)化程序

  • sy 內核進程消耗CPU時間百分比

3.內存

freefree -gfree -m

一般應用程序可用內存/系統(tǒng)物理內存<20%代表內存不足,需要增加內存

4.硬盤

df -h

怎么排查線上故障

5.磁盤IO

iostat -xdk 2 3

大部分場景下如果系統(tǒng)慢,一是CPU導致,還有一個就磁盤IO。常用的排查工具用iostat,參數(shù)含義跟vmstat一致

6.網絡IO

ifstat l

ifstat命令如果不支持需要安裝,可以查看各個網卡的in,out;觀察網絡負載情況;網絡情況是否正正常等

CPU占用過高分析思路

  • 先用top命令找出CPU占比最高的進程

  • 通過ps -ef命令或者jps(java進程)命令進一步定位這個占用CPU最高的進程是一個什么后臺程序

  • 定位到具體線程

ps -mp 進程ID -o THREAD,tid,time

-m表示顯示所有的線程,-p進程使用cpu的時間,-o后面是自定義參數(shù)

  • 將定位出來的線程ID轉換為16進制

printf "%x\n" 線程ID
  • 定位到具體代碼

jstat 進程PID | grep 16進制線程tid

以上排查過程讀者可以在本地跑一個死循環(huán)的程序,跟著步驟one by one分析一遍,肯定會有所收獲

系統(tǒng)上線前的風險評估及應急方案

為了出現(xiàn)故障時能夠有條理的處理,事先必須有完善的準備工作。

  • 系統(tǒng)監(jiān)控,再次強調,線上系統(tǒng)不能裸奔

  • 設置故障等級,阿里是根據影響用戶量來定故障等級,不同的故障等級有不同的止血時效要求,規(guī)定時間內沒止血就會上升,觸發(fā)更高級的流程

  • 故障演練,核心接口壓測必不可少,像秒殺系統(tǒng),瞬間大流量怎么處理,redis掛了怎么處理,DB CPU快打滿了怎么處理,都要事先演練好,準備好止血或者降級job或腳本

故障復盤

終于說到最核心的了,對程序員來說,每次線上事故踩坑都是一次大的成長,為了茁壯成長,事后復盤必不可少

常見的復盤流程三部曲

  • 故障處理過程,從發(fā)現(xiàn)故障到處理完故障詳細記錄幾點幾分分別干了什么事,把事故從發(fā)生到解決的所有細節(jié)記錄下來

  • 故障原因分析,說明故障的原因和分析報告,簡單一點就是定事故責任人了

  • 后續(xù)整改TODO

到此,關于“怎么排查線上故障”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注億速云網站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI