排查流程总结
遇到进程消失问题,按以下顺序排查:
第一步,检查 dmesg 是否有 OOM 记录。如果有,问题基本确定是内存耗尽。
第二步,检查 systemd/journalctl 日志。如果进程由 systemd 管理,日志会记录终止原因和收到的信号。
第三步,检查进程退出码。如果是 137 说明收到 SIGKILL,128+信号编号。如果是 0 说明正常退出。
第四步,检查审计日志ausearch。如果配置了 auditd,可以看到是谁执行了 kill 命令。
第五步,检查进程收到的信号。cat /proc/PID/status 可以看到进程的信号掩码。
第六步,分析资源使用。内存、CPU、文件描述符、进程数是否达到限制。
第七步,检查网络和存储。进程可能因为依赖的服务不可用而主动退出。
总结
进程消失的排查没有万能公式,需要根据信号来源、资源状态、系统日志一步步缩小范围。
OOM Killer 是最常见的原因,表现为 dmesg 中有记录,退出码通常是 137。systemd 超时杀死次之,表现为日志中有 TimeoutStopSec 记录。cgroup 限制在容器化环境中常见,exit code 也是 137。
建立预防机制比事后排查更重要:合理的资源限制、足够的监控告警、适当的 OOMScoreAdjust 配置,可以大大减少进程莫名消失的情况发生。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END










暂无评论内容