現(xiàn)象描述
前幾天在部署應(yīng)用的時(shí)候,發(fā)現(xiàn)linux機(jī)器上執(zhí)行命令反應(yīng)很慢,甚至出現(xiàn)卡死或者直接session丟失的現(xiàn)象。
進(jìn)一步研究,懷疑是不是磁盤空間不夠,ls命令顯示都很慢。但是top命令執(zhí)行的時(shí)候,顯示系統(tǒng)的資源還是正常的,負(fù)載壓力也不大,CPU大部分在idle。
于是嘗試執(zhí)行du命令。
結(jié)果發(fā)現(xiàn),命令直接卡死,沒有任何輸出,撤銷命令也撤銷不了,除非把session退出,否則無法操作。
嘗試再次連接vm,然后執(zhí)行ps命令,想查看是不是有什么異常的進(jìn)程。
結(jié)果發(fā)現(xiàn),ps命令也卡死,沒有輸出,同樣撤銷不了命令。
到這個(gè)地方感覺玩完了,我連查看手段都不行,怎么定位問題??反正能保證的是機(jī)器是沒有性能問題的。最不濟(jì)的解決方案是revert機(jī)器,或者重啟機(jī)器。但是也有種擔(dān)心機(jī)器起不來。
后來想著上述命令卡死的地方在哪里,于是祭上debug 命令,用strace du來看,du命令在執(zhí)行過程中哪里報(bào)錯(cuò)了。
果不其然,發(fā)現(xiàn)有些docker 卷的關(guān)聯(lián)點(diǎn)丟失了。導(dǎo)致du檢索有問題,不能夠處理這種異常情況。手動(dòng)把這些個(gè)卷清理下,然后就發(fā)現(xiàn)du命令正常。ps命令也恢復(fù)了。
綜上,strace命令還是不錯(cuò)的,在我們檢測(cè)系統(tǒng)命令無顯示或者卡死的時(shí)候,來追蹤執(zhí)行不乏是一種很好的解決手段。
