PM2使用详解:Node.js应用的进程管理利器

PM2 是一个进程管理工具,专为 Node.js 应用程序设计,旨在简化应用的部署和管理。它提供了应用程序的启动、停止、重启、监控等功能,并具有自动重启、负载均衡、日志管理等高级特性。以下是 PM2 的详细介绍和使用方法。

主要功能

  1. 进程管理:启动、停止、重启、删除应用。
  2. 监控:实时监控应用的状态、CPU、内存使用情况。
  3. 日志管理:查看和管理应用的日志。
  4. 负载均衡:通过集群模式(Cluster Mode)实现负载均衡。
  5. 自动重启:在应用崩溃或出现错误时自动重启。
  6. 启动脚本:开机时自动启动应用。
  7. 配置管理:使用 JSON 配置文件管理多个应用。

安装 PM2

要使用 PM2,首先需要安装它。可以通过 npm 安装:

Terminal window
1
npm install -g pm2

基本用法

启动应用

启动一个应用,只需使用 pm2 start 命令,并指定应用入口文件:

Terminal window
1
pm2 start app.js

查看应用状态

使用 pm2 list 命令查看当前运行的所有应用及其状态:

Terminal window
1
pm2 list

停止应用

使用 pm2 stop 命令停止指定应用:

Terminal window
1
pm2 stop app.js

或者使用应用 ID 停止:

Terminal window
1
pm2 stop 0

重启应用

使用 pm2 restart 命令重启指定应用:

Terminal window
1
pm2 restart app.js

或者使用应用 ID 重启:

Terminal window
1
pm2 restart 0

删除应用

使用 pm2 delete 命令删除指定应用:

Terminal window
1
pm2 delete app.js

或者使用应用 ID 删除:

Terminal window
1
pm2 delete 0

高级用法

启动多实例(集群模式)

使用 -i 选项可以启动多个实例,以利用多核 CPU:

Terminal window
1
pm2 start app.js -i max

max 表示启动与 CPU 核数相等的实例数,你也可以指定具体的实例数,例如 -i 4 启动 4 个实例。

管理日志

查看指定应用的日志:

Terminal window
1
pm2 logs app.js

或者查看所有应用的日志:

Terminal window
1
pm2 logs

监控应用

使用 pm2 monit 命令可以实时监控所有应用的状态:

Terminal window
1
pm2 monit

使用 JSON 配置文件

PM2 允许使用 JSON 配置文件来管理应用。首先创建一个 ecosystem.config.js 文件:

1
module.exports = {
2
apps: [
3
{
4
name: "app",
5
script: "./app.js",
6
instances: "max",
7
exec_mode: "cluster",
8
watch: true,
9
env: {
10
NODE_ENV: "development",
11
},
12
env_production: {
13
NODE_ENV: "production",
14
},
15
},
16
],
17
};

然后使用 pm2 start 命令启动配置文件中的应用:

Terminal window
1
pm2 start ecosystem.config.js

设置开机自启动

PM2 可以配置为在系统启动时自动启动应用。首先,生成启动脚本:

Terminal window
1
pm2 startup

接着保存当前的进程列表:

Terminal window
1
pm2 save

重载应用

如果你希望无缝重载应用(不中断服务),可以使用 pm2 reload 命令:

Terminal window
1
pm2 reload app.js

或者使用应用 ID:

Terminal window
1
pm2 reload 0

常用命令汇总

  • 启动应用:pm2 start <app>
  • 停止应用:pm2 stop <app>
  • 重启应用:pm2 restart <app>
  • 删除应用:pm2 delete <app>
  • 查看应用列表:pm2 list
  • 查看应用日志:pm2 logs <app>
  • 实时监控:pm2 monit
  • 开机自启动:pm2 startuppm2 save

通过这些功能,PM2 提供了一套完整的解决方案来管理 Node.js 应用的生命周期,从开发到生产环境的部署,都能够大大简化应用管理的复杂度,提高运行的稳定性和可靠性。

美团外卖红包 饿了么红包 支付宝红包