nodejs进程管理pm2介绍

PM2(Process Manager 2)是 Node.js 生态中最受欢迎的生产环境进程管理器。它能帮你维持 Node.js 应用 24/7 不间断在线,并提供零停机重启、负载均衡、性能监控和日志管理等核心功能。


1.为什么选择 PM2?

在生产环境中直接运行 node app.js 存在明显的缺陷:程序报错就会崩溃退出、无法利用多核 CPU、缺少方便的日志管理等。PM2 正是为解决这些问题而生的:

  • 保持持续运行:应用崩溃后会自动重启。
  • 负载均衡(Cluster 模式):利用多核 CPU,提高应用并发处理能力。
  • 零停机重载(Reload):更新代码或重启应用时无需中断服务。
  • 资源监控与限制:可限制最大内存占用,超限自动重启。
  • 开机自启:配置服务器重启后自动恢复服务。

2.安装与快速上手

2.1全局安装

1
npm install pm2 -g

2.2启动应用

1
2
3
4
5
6
# 启动应用并指定名称
pm2 start app.js --name "my-app"

# 以 Cluster(集群)模式启动,利用所有 CPU 核心
pm2 start app.js -i max
pm2 start app.js -i 0 # 使用1个cpu

3.常用命令速查

常用操作 命令 说明
启动/查看 pm2 start app.js 启动指定的 Node 程序
pm2 listpm2 ls 查看所有运行中的应用列表及状态
pm2 monit 打开实时终端监控界面(CPU、内存等)
进程控制 pm2 restart <id/name> 重启应用(会打断当前请求)
pm2 reload <id/name> 零停机热重载应用(推荐生产环境使用)
pm2 stop <id/name> 停止指定应用
pm2 delete <id/name> 停止并从列表中删除应用
日志管理 pm2 logs 查看所有应用的合并实时日志
pm2 logs <id/name> 查看特定应用的实时日志
pm2 flush 清空所有日志文件

4.进阶技巧

4.1使用配置文件(Ecosystem File)

对于复杂的生产项目,推荐使用配置文件(ecosystem.config.js)统一管理环境变量和启动选项。

生成配置文件:

1
pm2 init

配置文件示例(ecosystem.config.js):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
module.exports = {
apps : [{
name: "my-api",
script: "./app.js",
instances: "max", // 启用 Cluster 模式,利用最大 CPU 核心数
exec_mode: "cluster",
watch: false, // 生产环境建议关闭文件监听
max_memory_restart: "1G", // 内存超过 1GB 自动重启
env: {
NODE_ENV: "development",
},
env_production: {
NODE_ENV: "production",
}
}]
};

使用配置文件启动:

1
pm2 start ecosystem.config.js --env production

4.2服务器开机自启

确保服务器(如 Ubuntu/CentOS)重启后,PM2 能自动恢复之前运行的服务:

1
2
3
4
5
# 1. 保存当前运行的应用列表
pm2 save

# 2. 生成并设置开机自启服务(按终端提示复制执行返回的命令即可)
pm2 startup