现象描述
前几天在部署应用的时候,发现linux机器上执行命令反应很慢,甚至出现卡死或者直接session丢失的现象。
进一步研究,怀疑是不是磁盘空间不够,ls命令显示都很慢。但是top命令执行的时候,显示系统的资源还是正常的,负载压力也不大,CPU大部分在idle。
于是尝试执行du命令。
结果发现,命令直接卡死,没有任何输出,撤销命令也撤销不了,除非把session退出,否则无法操作。
尝试再次连接vm,然后执行ps命令,想查看是不是有什么异常的进程。
结果发现,ps命令也卡死,没有输出,同样撤销不了命令。
到这个地方感觉玩完了,我连查看手段都不行,怎么定位问题??反正能保证的是机器是没有性能问题的。最不济的解决方案是revert机器,或者重启机器。但是也有种担心机器起不来。
后来想着上述命令卡死的地方在哪里,于是祭上debug 命令,用strace du来看,du命令在执行过程中哪里报错了。
果不其然,发现有些docker 卷的关联点丢失了。导致du检索有问题,不能够处理这种异常情况。手动把这些个卷清理下,然后就发现du命令正常。ps命令也恢复了。
综上,strace命令还是不错的,在我们检测系统命令无显示或者卡死的时候,来追踪执行不乏是一种很好的解决手段。