pm2
是 Node.js 应用的进程管理工具(Process Manager 2 的缩写),用于 管理和守护运行中的 Node.js 应用程序。它可以让你的应用在后台运行、崩溃自动重启、日志记录、负载均衡、开机自启等。
一、PM2 能做什么?
简单总结:
功能 | 说明 |
---|---|
守护进程(daemon)运行 | 程序在后台运行,不受终端关闭影响 |
崩溃自动重启 | 程序挂掉后自动重启 |
日志管理 | 自动生成并记录 stdout / stderr 日志 |
进程监控 | 实时查看 CPU / 内存占用 |
开机启动 | 设置成系统启动时自动运行 |
负载均衡 | 多核 CPU 下的 cluster 模式 |
二、安装与基本用法
1. 安装
npm install -g pm2
2. 启动你的应用
假设你有个 app.js
文件:
pm2 start app.js
3. 查看进程状态
pm2 list
4. 日志查看
pm2 logs
5. 重启 / 停止 / 删除进程
pm2 restart app
pm2 stop app
pm2 delete app
6. 保存进程列表
pm2 save
7. 设置开机启动
pm2 startup
运行命令后会输出一条系统命令,比如:
sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u username --hp /home/username
复制执行后,再执行 pm2 save
。
三、进阶功能
1. 多实例模式(利用多核 CPU)
pm2 start app.js -i max
-i max
会根据 CPU 核心数自动启动多个实例(cluster 模式)。
2. 使用配置文件(推荐)
创建 ecosystem.config.js
:
module.exports = {
apps: [
{
name: "my-app",
script: "./app.js",
instances: 2,
exec_mode: "cluster",
watch: true,
env: {
NODE_ENV: "development"
},
env_production: {
NODE_ENV: "production"
}
}
]
}
启动:
pm2 start ecosystem.config.js --env production
app.js
是什么?
应用程序的入口文件:
pm2 start dist/main.js # 如果是 NestJS
pm2 start .next/standalone/server.js # 如果是 Next.js
pm2 start server/index.js # 如果你自己放在 server 目录
四、PM2 的优点
优点 | 描述 |
---|---|
稳定性高 | 进程崩溃后会自动重启 |
易于部署 | 可以通过配置文件快速部署多服务 |
支持日志查看与管理 | 支持日志切割、查看、导出 |
多进程支持 | 自动将服务部署在多个 CPU 核心上,提高性能 |
跨平台 | 支持 macOS / Linux / Windows |
开机自启 | 保证服务上线后自动运行 |
五、适用场景
- 部署 Node.js Web 应用(如 Express、Koa)
- 启动后端 API 服务
- 在服务器上长期运行的脚本任务
- 多核并发任务(配合 cluster 模式)
比如在 Next.js、NestJS 或 Vite SSR 项目中,pm2
都可以作为后台启动管理工具使用,替代 node app.js
或 npm run start
等传统方式。