node 服务进程守护是怎么做的?

一、核心原理与架构设计 detached:true 子进程分离技术 手动实现守护进程 ​Cluster 模块(多进程管理)​ ​主从架构:主进程(Master)负责监控,子进程(Worker)处理请求,任一 Worker 崩溃后自动重启 ​代码示例: javascript// master.jsconst cluster = require('cluster');if (cluster.isMaster) { const cpus = require('os').cpus().length; for (let i = 0; i < cpus; i++) cluster.fork(); cluster.on('exit', (worker) => cluster.fork()); // 重启子进程} else { require('./app.js'); // 子进程启动服务} ​Child Process 模块(单进程守护)​ ​子进程监控:通过 child_process.fork 启动服务,监听 exit 事件重启 javascriptconst { fork } = require('child_process');let worker = fork('app.js');worker.on('exit', () => worker = fork('app.js')); // 进程崩溃后重启 ​Shell 脚本守护(低成本方案)​ ​无限循环重启:通过 while true 循环捕获异常,适合无复杂依赖的环境 bash#!/bin/bashwhile true; do node app.js echo "进程崩溃,1秒后重启..." sleep 1done ​日志记录:重定向错误输出至文件(如 2>> error.log) 第三方进程管理工具

来源整理自:vue3js.cn 面试官系列