PM2 使用指南:轻松管理 Node.js 应用进程

814 阅读3分钟

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 会启动该进程,并将其放入进程管理中。 image.png

4. 常用命令

PM2 提供了一套丰富的命令,用于管理进程、查看日志、监控性能等。以下是一些常用的命令:

4.1 查看进程列表

查看当前由 PM2 管理的所有进程:

pm2 list

2d0e501887aefc5e1a19d35fd150238f.png 该命令会列出所有正在运行的进程,包括进程 ID、状态、CPU 使用率等信息。

4.2 查看进程日志

查看应用的标准输出和错误日志:

pm2 logs

如果你想查看某个特定进程的日志,可以指定进程名称或进程 ID:

pm2 logs <app-name or id>

app-name和ID就是list里面的idname

4.3 停止进程

要停止某个进程,可以使用 pm2 stop 命令:

pm2 stop <app-name or id>

例如,停止名为 app.js 的进程:

pm2 stop app.js

image.png

这个时候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

该命令会启动一个交互式的监控界面,帮助你实时查看进程状态和性能指标。

image.png

5.3 PM2 集群负载均衡

通过集群模式,PM2 自动将请求分发到多个进程,从而实现负载均衡。你可以通过 pm2 start 命令中的 -i max 参数来自动启动与 CPU 核数相等的进程数量,从而提高应用的并发能力。

5.4 PM2 日志管理与分析

PM2 自带日志功能,不仅能查看标准输出日志,还支持错误日志和输出日志的分离。你可以为每个应用单独配置日志文件路径,以便于管理和分析。