Skip to content

进程、信号与诊断

process 表示当前 Node.js 进程。常用信息包括 argvenvcwd()pidversionexitCode

优雅退出

容器与进程管理器通常通过 SIGTERM 要求服务结束。收到信号后停止接流量、关闭监听与连接、设置兜底超时;不要在信号处理器中直接 process.exit(),否则未完成的 I/O 会被截断。

js
process.once('SIGTERM', shutdown)
process.once('SIGINT', shutdown)

async function shutdown() {
  server.close()
  await closeDatabase()
  process.exitCode = 0
}

SIGKILL 不能被捕获,因此清理逻辑必须能容忍进程随时被终止。

退出码与日志

  • 正常退出码为 0;非零表示失败。
  • 优先设置 process.exitCode,让事件循环自然清空。
  • 日志写入结构化字段;错误对象使用 { err: error } 等方式保留堆栈。

排查

bash
node --inspect src/index.js
node --trace-warnings src/index.js
node --trace-uncaught src/index.js
node --report-uncaught-exception src/index.js

调试线上问题还应关注事件循环延迟、内存使用、打开句柄数、错误率与请求延迟;不要仅靠 console.log

基于 MIT 许可发布