其他 · 2021年6月25日 0

记一次linux ps 命令卡死问题

linux上node服务发布,因为服务进程频繁重启导致僵尸进程,kill -9 无效,最后解决方案是reboot重启机器

详细过程如下,服务正常发布,服务重启过程中有个别进程出现问题无限重启,进程问题恢复后,发现系统卡顿,同时出现cpu过高报警

登录服务器使用尝试使用htop命令查看占用情况,命令输入后无任何反应直接卡死,ctrl + c 强制退出无效

又尝试使用atop命令,回车后依旧卡死,和htop的情况一致

又继续尝试使用ps aux,命令查看进程,输出到一半也被卡死

然后尝试使用 strace ps aux 查看进程文件访问顺序,进程最终卡死在如下图所在位置

通过ls -l /proc/408011 目录查看进程信息

尝试使用cat /proc/408011/cmdline 读取文件,发现依旧卡死

尝试 cat /proc/408011/environ,问题依旧

从google找到一个相关的文章,文章地址

文章中指出是因为linux的系统bug导致的,读取文件会因为系统api问题造成读取的死锁,导致读取的进程直接变成僵尸进程无法处理任何消息和信号事件导致进程卡死

解决方案如文章开头reboot