LOADING
885 字
4 分钟
PM2
2026-06-05
运维
/
工具
前端

一、PM2介绍

PM2 缩写是 Process Manager 2 ,是一个守护进程管理器,保持应用程序在线运行

它由 Node.js 编写,通过 NPM 即可安装

PM2 的核心定位是:在操作系统 init 进程和你的应用程序之间充当一个中间层

它接管了应用程序的启动、监控、重启、日志等全生命周期管理

注意:这里的 PM2 跟“PM2.5”没有半毛钱关系(笑)

二、认知

Node.js 基于 V8 引擎,其 JavaScript 代码执行在单线程

如果主线程崩溃、内存耗尽,那么服务就宕了

线上运行的 Node 应用,是需要做自动重启、日志管理、多进程负载均衡、性能监控等一系列事情的

PM2 正是为解决这些“跑起来之后的事”而生的


PM2 解决的核心问题是 Node.js 进程的生产环境运维难题

  1. 进程守护:node 应用太脆了,pm2 充当“守护者”——应用崩溃后自动重启,确保服务持续可用

  2. 日志管理:默认 node日志 只输出到控制台,pm2 会自动采集所有进程的 stdout 和 stderr,写入 ~/.pm2/logs 目录,以“进程名-out.log”和“进程名-error.log”分别保存

  3. 负载均衡:Node 是单线程的,无法利用多核 CPU。PM2 基于 Node.js 的 cluster 模块,可以在服务器所有 CPU 核心上运行多个应用实例

  4. 性能监控:pm2 提供实时的 CPU 和内存监控,可通过 pm2 monit 查看

三、适用场景

PM2 最适合以下场景:

场景说明
Node.js 微服务部署需要集群模式充分利用多核 CPU
单机生产环境单台服务器上运行多个 Node 应用
中小型生产系统团队希望简单可靠的进程管理
需要零停机更新的 Web 服务使用 pm2 reload 实现无感知发布
后台任务 / Cron Workerfork 模式适合定时任务或队列工作者
跨平台环境需要在 Linux/macOS/Windows 上保持一致体验

四、使用

1. 安装

Terminal window
# 全局安装
npm install pm2@latest -g

2. 启动应用

Terminal window
# 基本启动
pm2 start app.js
# 指定名称
pm2 start app.js --name my-api
# 集群模式(利用所有 CPU 核心)
pm2 start app.js -i max
# 指定进程数
pm2 start app.js -i 4
# 内存超限自动重启
pm2 start app.js --max-memory-restart 200M
# 文件变更自动重启(仅开发环境)
pm2 start app.js --watch
# 定时重启
pm2 start app.js --cron "0 3 * * *"

3. 进程管理

Terminal window
pm2 list # 查看所有进程状态
pm2 show <id|name> # 查看进程详情
pm2 monit # 终端实时监控面板
pm2 logs # 查看所有日志
pm2 logs <name> # 查看特定进程日志
pm2 restart <name> # 重启进程
pm2 reload <name> # 零停机重载(集群模式)
pm2 stop <name> # 停止进程
pm2 delete <name> # 删除进程
pm2 stop all # 停止所有
pm2 restart all # 重启所有

4. 配置文件(Ecosystem File)

生成配置文件:

Terminal window
pm2 ecosystem

示例 ecosystem.config.js

module.exports = {
apps: [{
name: 'api',
script: './server.js',
instances: 'max',
exec_mode: 'cluster',
max_memory_restart: '200M',
watch: false,
ignore_watch: ['node_modules', 'logs', 'uploads'],
env: {
NODE_ENV: 'development'
},
env_production: {
NODE_ENV: 'production'
}
}]
}

启动:

Terminal window
pm2 start ecosystem.config.js
pm2 start ecosystem.config.js --env production

5. 开机自启

Terminal window
# 生成启动脚本
pm2 startup
# 保存当前进程列表
pm2 save
# 之后每次服务器重启,PM2 会自动恢复所有进程

6. 其他有用命令

Terminal window
pm2 describe <id> # 查看进程详细信息
pm2 plus # 开启 Web 监控面板
pm2 update # 更新 PM2 及内存中的进程信息
PM2
/tech/frontend/pm2/
作者
J.
发布于
2026-06-05
许可协议
CC BY-NC-SA 4.0
编辑于 2026-06-05

部分信息可能已经过时

Profile Image of the Author
J.
我是Jiy,热爱生活的学生一只~
公告
欢迎来到我的博客!
目录
目录