主题
进程、信号与诊断
process 表示当前 Node.js 进程。常用信息包括 argv、env、cwd()、pid、version 和 exitCode。
优雅退出
容器与进程管理器通常通过 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。
