背景
在前端开发中,我们经常需要运行多个 Node.js 进程,但是手动管理进程很不便利,难以解决进程宕机或者异常的问题。这时候就需要一个能够帮助我们自动部署、监控、运维 Node.js 应用程序的工具,而 PM2 正是这样的一个工具。
PM2 简介
PM2 是一个 Node.js 进程管理器,可以设置应用进程数、宕机自动重启、监听进程、应用程序日志记录、负载均衡等等。
基本上,PM2 是一个先进的、可为生成环境部署定制的 Node.js 进程管理器,能够大幅度优化 Node.js 运行效率以及进程管理的每一个方面。
PM2 提供了如下特性:
- 内建负载均衡(使用 Node.js 集群模块)
- 后台运行
- 0 秒停机重载,维护升级出色体验
- 管理命令行工具
pm2
,可选 Web 界面监控 - 具有 Ubuntu 和 CentOS 的启动脚本
- 停止不稳定的进程(避免无限循环)
- 控制台检测
- 提供 HTTP API
- 远程部署
总的来说,PM2 包含了许多有用的功能,所以我们应该在日常开发中使用它来提高生产力。
安装
可以使用 npm 安装 PM2:
npm install pm2 -g
安装完成后,验证是否安装成功:
pm2 --version
接下来我们来看如何使用 PM2。
使用
在我们的项目根目录下使用以下命令启动应用程序:
pm2 start app.js
这将启动一个名为 app
的进程,并且 PM2 将在后台启动并运行这个进程。现在我们可以通过以下命令查看所有启动的进程列表:
pm2 list
输出应该包含我们的进程:
┌──────────┬────┬─────────┬───────┬─────────┬─────────┬──────────┐ │ Name │ id │ version │ mode │ pid │ status │ restarts │ ├──────────┼────┼─────────┼───────┼─────────┼─────────┼──────────┤ │ app │ 0 │ 1.0.0 │ fork │ 11775 │ online │ 0 │ └──────────┴────┴─────────┴───────┴─────────┴─────────┴──────────┘
如果我们需要停止一个进程:
pm2 stop app
PM2 将会发送一条 SIGINT 信号(相当于按下 Ctrl-C),然后停止该进程。
使用以下命令在后台运行我们的进程:
pm2 start app.js --watch --ignore-watch="node_modules"
我们设置了 PM2 在没有技术工具时,使用 Node.js 内置的文件系统监听机制自动重启应用程序。--ignore-watch
属性将忽略 node_modules
目录,因为我们不需要监视它们的文件更改。
可以使用以下命令显示 PM2 中的特定进程的详细信息:
pm2 show app
输出应该包括进程的所有详细信息。
高级功能
PM2 或许是一个简单的进程管理器,但它也允许您配置一些高级功能。以下是一些额外的示例,这些示例允许您最大限度地提高您的 Node.js 应用程序的性能:
自动重启应用
您可以在 PM2 中配置应用程序应如何行为。该 pm2 start app.js --restart-delay
选项包括在应用程序出现异常并导致崩溃时的重新启动延迟。可以使用以下命令配置应用程序以在崩溃时,自动重新启动并在重启后一定间隔延迟:
pm2 start app.js --restart-delay=5000
这会使您的应用程序在崩溃之后在 5 秒内重新启动。
内存和 CPU 限制
使用以下命令配置应用程序启动的内存和 CPU 极限:
pm2 start app.js --max-memory-restart 200M --max-restarts=10
这里,我们设置了应用程序的最大内存重启限制为 200 MB,如果我们正在经历该限制,则会重新启动应用程序。除此之外,我们还通过设置上限来避免了应用程序的无限重启。
更好的日志记录
对于简单的日志记录需求,PM2 很合适。在启用日志记录后,PM2 将在 ~/.pm2/logs/
目录下自动创建一个以应用程序名称命名的日志文件。
以下是配置应用程序以记录其输出到日志文件的示例:
pm2 start app.js --name="app" --log="~/logs/app.log"
这将会在 Home 目录下创建一个名为 app.log
的日志文件并记录您的应用程序的输出。
瑕疵监控
对于那些希望监视其应用程序瑕疵和异常的人来说,PM2 具有一些额外的内置监控功能。以下是一个 PM2 命令,可以用来监视您的应用程序是否出现异常:
pm2 log
这会列出您的应用程序在运行时已经发生的所有事件。
结论
我们已经了解了如何使用 PM2 管理 Node.js 进程,这应该能够帮助您更好地管理和部署您的应用程序。
PM2 有许多高级功能,本文只展示了其中的一部分。当您的应用程序变得更加复杂时,您将会发现这些功能非常有用。最好的方法是尝试一下,并发现哪些功能最适合您的应用程序。
PM2 是一个功能强大且易于使用的工具。我们强烈建议您使用它来管理您的 Node.js 应用程序,并获得所有重要的管理和部署工具。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66ee8b656fbf96019724006e