Node 应用优化、进程守护与运维

更新于 2026年8月21日

适用人群:Node 站点已上线、要做性能优化与稳定运维的开发者。

核心概念

稳定性优先

Node 是单进程事件循环,一旦崩溃或内存泄漏会导致服务不可用。用 PM2/systemd 守护、开启多实例(PM2 cluster)利用多核、监控内存并设置异常自动重启,是运维重点。

加速

把静态资源(打包后的 JS/CSS/图片)交给 Nginx 直接服务或走 CDN,减少 Node 负担;页面/接口按需加缓存。

部署更新

更新代码时先构建、再重启进程;PM2 的 reload 可做到零停机滚动重启,避免用户请求中断。

操作步骤

  1. 步骤 1多实例利用多核

    用 PM2 cluster 模式起多个实例(如 pm2 start -i max),充分利用多核 CPU。

  2. 步骤 2静态资源交给 Nginx/CDN

    打包后的静态资源用 Nginx 直接服务或接 CDN,境内 CDN 需域名已备案。

  3. 步骤 3监控内存与可用性

    监控进程内存、CPU 和网站可用性,设置内存超限自动重启。

  4. 步骤 4零停机更新

    更新时先 npm ci + build,再 pm2 reload 滚动重启,避免请求中断。

  5. 步骤 5备份与日志

    备份应用数据与配置,集中管理 PM2/应用日志便于排障。

实际示例

# PM2 集群模式 + 零停机重启
pm2 start .output/server/index.mjs -i max --name myapp
# 更新代码后:
npm ci && npm run build && pm2 reload myapp
# 内存超限自动重启(如超过 500M)
pm2 start app.js --name myapp --max-memory-restart 500M

常见错误

  • ⚠️单实例跑在多核机器上,CPU 利用不充分(可用 PM2 cluster)
  • ⚠️用 pm2 restart 而非 reload 更新,造成短暂请求中断
  • ⚠️静态资源也让 Node 处理,白白增加负载(应交给 Nginx/CDN)
  • ⚠️没监控内存,内存泄漏累积到 OOM 才发现

对应工具

常见问题

Node 应用怎么更新不影响用户?
先构建好新版本,再用 PM2 reload 做零停机滚动重启,逐个替换实例,用户请求不中断。
Node 应用怎么防崩溃?
用 PM2/systemd 守护实现崩溃自动重启,设置内存上限自动重启,并监控可用性及时告警。

相关教程

相关文章

官方资料来源