Node.js 进程为什么会退出:从事件循环到 unhandledRejection 的排查实录
线上一个用 Node.js 写的定时任务服务最近总是隔几天就没了,没有 core dump,没有明显的 OOM 日志,PM2 虽然配置了自动重启,但重启后过一段时间又会消失。这个服务本身逻辑不复杂,主要是定时从数据库拉取任务、调用第三方 API、写入结果,用的还是 Node 14,没有引入太多框架。排查这类“静默退出”问题,最怕的是只看到进程没了,却不知道它为什么没的。实际上 Node 进程退出无非几种情况:事件循环里没有任何待处理任务、显式调用了 process.exit、未捕获的异常或 Promise rejection 触发了默认退出、或者被外部信号杀掉。这篇文章从这次排查过程出发,梳理...