备份进程卡在不可中断状态好几个小时,普通终止和强制终止都没有反应,负载里那一项一直挂着,重启服务也起不来。
这类报错背后常见的原因有几处,逐个排除就行。进程陷在内核里等待 IO,信号要等系统调用返回才会被处理。另一种情况是底层存储无响应,请求一直挂起没有超时。
不容易想到的是,远端挂载点失联,IO 永远等不到结果。
上来先确认进程卡在哪个内核函数
ps -o pid,stat,wchan,cmd -p 12345
再往下看内核栈定位阻塞点
cat /proc/12345/stack
随后检查挂载的远端存储
mount | grep -E 'nfs|cifs|fuse'
必要时强制卸载存储
umount -f -l /mnt/nfs
这类问题以前遇到过,但这次的触发条件和上次不一样。
改完先别撤,确认这几项。进程从不可中断状态消失,负载回落,备份任务重新调度可以正常执行。
补一句。这类进程不能靠重启服务解决,父进程退出后它可能变成孤儿继续挂着,根因始终在存储层。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。