1. 什么是 PM2?
PM2 是一个进程管理工具,专为 Node.js 应用设计。它不仅可以帮助我们管理应用进程,还具备以下特点:
- 多进程模式:支持集群模式,充分利用多核 CPU。
- 高可用性:支持应用的自动重启,确保应用高可用。
- 日志管理:集成日志输出功能,便于监控和排查问题。
- 性能监控:提供详细的应用性能监控,便于调优和分析。
2. 安装 PM2
PM2 可以通过 npm 安装,确保你已安装了 Node.js 和 npm。打开命令行,执行以下命令进行全局安装:
npm install pm2 -g
安装完成后,你可以通过 pm2 命令来管理你的 Node.js 应用。
也可以使用
npm install --save-dev pm2只针对当前项目进行安装,使用的时候在前面添加npx,比如启动应用npx pm2 start app.js
3. 启动应用
使用 PM2 启动应用非常简单,只需要在命令行中运行以下命令:
pm2 start app.js
其中 app.js 是你的 Node.js 应用的入口文件。PM2 会启动该进程,并将其放入进程管理中。
4. 常用命令
PM2 提供了一套丰富的命令,用于管理进程、查看日志、监控性能等。以下是一些常用的命令:
4.1 查看进程列表
查看当前由 PM2 管理的所有进程:
pm2 list
该命令会列出所有正在运行的进程,包括进程 ID、状态、CPU 使用率等信息。
4.2 查看进程日志
查看应用的标准输出和错误日志:
pm2 logs
如果你想查看某个特定进程的日志,可以指定进程名称或进程 ID:
pm2 logs <app-name or id>
app-name和ID就是list里面的
id和name列
4.3 停止进程
要停止某个进程,可以使用 pm2 stop 命令:
pm2 stop <app-name or id>
例如,停止名为 app.js 的进程:
pm2 stop app.js
这个时候ID和name都还在pm2中占据着,没有完全释放,通过
pm2 list还可以看到,只有通过delete才能完全删除
4.4 重启进程
PM2 支持平滑重启应用,无需手动停止再启动进程:
pm2 restart <app-name or id>
4.5 删除进程
删除某个进程,使其不再由 PM2 管理:
pm2 delete <app-name or id>
4.6 启动集群模式(Cluster mode)
PM2 支持多进程(集群)模式,这对于提高应用的可用性和性能非常有用。通过 -i 参数指定进程数,PM2 会自动创建多个实例以平衡负载:
pm2 start app.js -i max
-i max 表示使用服务器上的最大 CPU 核数来启动进程。你也可以指定具体的进程数,比如:
pm2 start app.js -i 4
5. PM2 的其他强大功能
除了常规的进程管理功能,PM2 还提供了其他一些非常有用的功能,帮助你更加高效地运维应用。
5.1 PM2 监控(PM2 monit)
PM2 提供了一个实时监控工具,可以查看每个进程的 CPU、内存使用情况等:
pm2 monit
该命令会启动一个交互式的监控界面,帮助你实时查看进程状态和性能指标。
5.3 PM2 集群负载均衡
通过集群模式,PM2 自动将请求分发到多个进程,从而实现负载均衡。你可以通过 pm2 start 命令中的 -i max 参数来自动启动与 CPU 核数相等的进程数量,从而提高应用的并发能力。
5.4 PM2 日志管理与分析
PM2 自带日志功能,不仅能查看标准输出日志,还支持错误日志和输出日志的分离。你可以为每个应用单独配置日志文件路径,以便于管理和分析。