掌握生产环境中的 Node.js 与 PM2 | 原创,AI翻译
如果你曾经构建过一个 Node.js 应用程序,并且想知道如何在生产环境中让它平稳运行,你可能会遇到 PM2。如果没有,让我介绍一下这个改变游戏规则的工具。PM2,即 Process Manager 2,是一个开源工具,旨在使在生产环境中管理 Node.js 应用程序变得轻而易举——配备内置负载均衡器、监控功能和零停机部署。让我们深入了解 PM2 的优点以及为什么它可能会成为你的首选工具。
什么是 PM2?
PM2 的核心是一个 Node.js 应用程序的进程管理器。可以把它看作是一个守护者,它保持你的应用程序运行,如果崩溃了会自动重启,并帮助你轻松扩展。最初由 Unitech 创建,现在由一个活跃的开源社区维护,PM2 以超过 45k 个 GitHub 星标(截至 2025 年初)和可靠性的声誉赢得了认可。
与在终端中运行 node app.js
并祈祷不同,PM2 控制了你的应用程序的生命周期。它就像给你的 Node.js 应用程序配备了一个个人助理,处理那些无聊的事情——这样你就可以专注于编码。
PM2 为什么出众
Node.js 本质上是单线程的,这对于轻量级、非阻塞 I/O 操作非常好,但在高流量下可能会成为瓶颈。PM2 通过一些强大的功能解决了这个问题:
-
简化进程管理 使用单个命令如
pm2 start app.js
,你的应用程序就会作为一个管理进程运行。如果它崩溃了(嘿,这会发生),PM2 会自动重启它。你可以使用简单的命令如pm2 stop app
或pm2 delete app
来停止、重启或删除进程。无需照顾。 -
内置负载均衡 这就是 PM2 发挥作用的地方。使用其集群模式(
pm2 start app.js -i max
),PM2 会在你的 CPU 核心上启动多个应用程序实例。然后它会在它们之间负载均衡传入的请求。无需单独的工具如 Nginx 来分发流量——PM2 直接处理。 -
零停机重新加载 你是否曾经因为更新会将用户踢出应用程序而害怕部署?PM2 通过
pm2 reload app
解决了这个问题。它逐个重启你的应用程序进程,确保用户没有中断。顺滑如黄油。 -
监控和日志 运行
pm2 monit
会给你一个实时仪表盘,显示 CPU 使用情况、内存消耗和重启次数。需要查看错误?pm2 logs
会将你的应用程序日志直接流式传输到你的终端。就像为你的应用程序配备了一个控制塔。 -
启动脚本 你想让 PM2 在服务器重启后自动启动吗?只需运行
pm2 startup
,它会生成一个脚本在启动时重新启动你的应用程序。几分钟内就可以投入生产。
使用 PM2 入门
准备好试试吗?设置非常简单:
- 全局安装 PM2
打开终端并运行:
npm install pm2 -g
这会全局安装 PM2,这样你就可以在任何地方使用它。
- 启动你的应用程序
导航到你的项目文件夹并运行:
pm2 start app.js
你的应用程序现在由 PM2 管理。想使用集群模式?试试:
pm2 start app.js -i max
max
标志告诉 PM2 使用所有可用的 CPU 核心。 -
检查状态 运行
pm2 list
以查看所有正在运行的进程、它们的状态和资源使用情况。 - 探索生态系统
PM2 不仅仅是一个单一功能的工具。它支持配置文件(例如
ecosystem.config.js
)用于更复杂的设置,与 Keymetrics 集成以进行高级监控,甚至可以与非 Node.js 应用程序一起使用,如果你想冒险的话。
适用对象
PM2 适用于任何在生产环境中运行 Node.js 的人——无论你是独自开发者部署一个副项目,还是团队成员管理一个高流量 API。它轻量级、直观,不会让你陷入复杂的设置步骤。小型初创公司和大型企业都发誓使用它。
一些专业技巧
- 观察模式:在开发过程中使用
pm2 start app.js --watch
以在文件更改时自动重启你的应用程序。 - 内存限制:使用
--max-memory-restart 200M
设置内存上限,以在应用程序变得过于饥饿时重启它。 - 日志清理:运行
pm2 flush
以清除旧日志并保持整洁。
最后的想法
PM2 是那种一旦开始使用,你就会想知道自己以前是如何没有它的工具。它将管理 Node.js 进程的混乱转变为流畅、无压力的体验。无论你是扩展微服务、保持 Web 应用程序运行,还是只是在玩一个爱好项目,PM2 都会支持你。
所以,前往 PM2 的 GitHub 页面,给它一个星标,并试试。你的 Node.js 应用程序会感谢你——你的理智也会。