Pm2 Cluster Reload Auto Restart
title: 使用 PM2 管理 Node.js 应用:集群模式、重载与自动重启 name: pm2-cluster-reload-auto-restart date: 2026-04-29 tags: [pm2, nodejs, clustering, restart, automation] excerpt: 深入讲解 PM2 的集群模式、零停机重载、代码变更自动重启等常用功能,帮助提升 Node.js 应用的稳定性与性能 categories: [DevOps] —
PM2 是一个流行的 Node.js 进程管理器,专为提高 Node.js 应用的可靠性与性能而设计。它具有集群模式、零停机重载、自动重启等功能,可以帮助开发者更好地管理生产环境中的应用。本文将介绍 PM2 的一些常用功能,帮助你轻松部署、监控和管理 Node.js 应用。
1. 集群模式
在集群模式下,PM2 会启动多个进程来分担负载,从而提升应用的性能。你可以通过以下命令启动多个实例:
$ pm2 start app.js -i 4
此命令会启动 app.js 的 4 个实例,每个实例会在独立的进程中运行,利用多核处理器提升应用性能。
2. 零停机重载
PM2 支持零停机重载功能,这意味着即使你更新了代码,PM2 也会在不中断服务的情况下重新加载应用。使用以下命令重载应用:
$ pm2 reload app
这个命令会在不影响用户请求的情况下,重启应用的所有进程。
3. 代码变更自动重启
PM2 还提供了代码变更自动重启的功能。当你修改了代码文件,PM2 会自动重新加载应用。你可以通过以下命令开启自动重启功能:
$ pm2 start app.js --watch
如果你希望忽略某些文件夹(例如 node_modules 和 logs),可以使用 --ignore-watch 参数:
$ pm2 start app.js --watch --ignore-watch="node_modules logs"
4. 设置内存上限,超过自动重启
为了防止内存泄漏导致应用崩溃,你可以设置内存上限。若应用占用的内存超过该限制,PM2 会自动重启进程。以下命令设置内存上限为 300MB:
$ pm2 start app.js --max-memory-restart 300M
5. 定时重启
PM2 支持定时重启功能。你可以设置一个 cron 表达式来定期重启应用。例如,以下命令会在每天凌晨 3 点重启应用:
$ pm2 start app.js --cron-restart="0 3 * * *"
6. 实时监控面板
PM2 提供了一个实时监控面板,帮助你查看应用的性能和进程状态。你可以使用以下命令启动监控面板:
$ pm2 monit
7. 进程分组
你可以将不同的进程分组管理,为每个进程指定一个名称,这样方便管理。例如,启动 dify-api 和 dify-worker 两个进程,并重启 dify-api 进程:
$ pm2 start app.js --name dify-api
$ pm2 start worker.js --name dify-worker
$ pm2 restart dify-api
8. 总结
PM2 是一个强大的工具,可以帮助你高效管理和优化 Node.js 应用。它提供了集群模式、零停机重载、自动重启等功能,确保你的应用在生产环境中始终稳定运行。如果你还没有使用 PM2,现在是时候尝试它了!