Node 单线程,一个未捕获异常整个进程就死了。PM2 解决的就是生产环境的「保活」:pm2 start app.js 后进程崩溃会自动拉起;cluster 模式一键起多个进程(按 CPU 核数)用同一端口做负载均衡;pm2 reload 实现零停机重启(一个一个替换工作进程)。
日志能力是另一大 praktische 功能:应用的 stdout/stderr 自动落到 ~/.pm2/logs/,按应用名分文件。配合 pm2 startup 生成开机自启脚本、pm2 save 保存进程列表。注意:PM2 cluster 模式下多个进程不共享内存,session/缓存要放 Redis 而不是进程内 Map。
// 启动并常驻(崩溃自动重启) // pm2 start app.js --name api // 以集群模式起 4 个进程共享一个端口 // pm2 start app.js -i 4 // 零停机重载(逐个换工作进程,全程不拒绝请求) // pm2 reload api // 常用命令 // pm2 list 查看进程 // pm2 logs api 实时日志 // pm2 monit CPU/内存监控 // pm2 startup 生成开机自启 // pm2 save 保存当前进程列表 // ecosystem 配置文件(ecosystem.config.js) module.exports = { apps: [{ name: 'api', script: 'app.js', instances: 'max', // 按 CPU 核数起集群 exec_mode: 'cluster', max_memory_restart: '300M', // 内存超限自动重启 env_production: { NODE_ENV: 'production' }, }], };