日常Bug排查-請求偶爾超時-磁盤故障
磁盤壞道
磁盤故障是個非常常見的現象。而磁盤壞道便是其中最常見的問題。而當我們的應用做磁盤操作的時候 正巧落在壞道上面,就會導致卡住的現象。如果壞道比較小的話,會在一段時間內恢復響應。但是,如果下次操作又落到壞道上面,依舊會卡主-_-!
故障現象
開發陸續收到服務器負載過高以及業務報錯告警。表現為偶爾的調用超時。經排查業務告警和負載過高均出現在同一臺機器上。這時候呢,我們就可以立馬翻看監控了。
監控
(注:這邊只是示意圖,產線截圖因為安全原因不可能放出來的) 從中可以發現,超時的調用時間分布和CPU Busy IoWait的時間分布一致。既然是IO Wait,我們很自然的想到可能是磁盤有問題。
磁盤監控
圖中可以看到,disk和cpu iowait時間一致。同時觀測到,我們當時的iops僅有30左右。很明顯的,可以推導出當時磁盤有問題。SA反饋給廠商后,反饋磁盤有壞道。
后續方案
首先,由于磁盤問題不能立馬解決(需要等廠商換盤),所以先下線這幾臺機器的流量,等待下一次的維護后再上線。在應用層,我們可以通過配置異步日志的方式來減少損失。但異步日志滿了之后,依舊會出現卡頓的現象,那么我們可以配置成異步日志可丟的模式,這就需要在日志的準確性和系統的高可用之間做取舍了。
總結
磁盤出問題是一個非常常見的現象,在遇到問題后,和監控曲線相對應就能很快找到原因。
類似的性能/故障排查清單以及經驗可以在下面這本書中找到
本文轉載自微信公眾號「解Bug之路」,可以通過以下二維碼關注。轉載本文請聯系解Bug之路公眾號。