pm2
是 Node.js 应用的进程管理工具(Process Manager 2 的缩写),用于 管理和守护运行中的 Node.js 应用程序。它可以让你的应用在后台运行、崩溃自动重启、日志记录、负载均衡、开机自启等。
功能 | 说明 |
---|---|
守护进程(daemon)运行 | 程序在后台运行,不受终端关闭影响 |
崩溃自动重启 | 程序挂掉后自动重启 |
日志管理 | 自动生成并记录 stdout / stderr 日志 |
进程监控 | 实时查看 CPU / 内存占用 |
开机启动 | 设置成系统启动时自动运行 |
负载均衡 | 多核 CPU 下的 cluster 模式 |
npm install -g pm2
假设你有个 app.js
文件:
pm2 start app.js
pm2 list
pm2 logs
pm2 restart app
pm2 stop app
pm2 delete app
pm2 save
pm2 startup
运行命令后会输出一条系统命令,比如:
sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u username --hp /home/username
复制执行后,再执行 pm2 save
。
pm2 start app.js -i max
-i max
会根据 CPU 核心数自动启动多个实例(cluster 模式)。
创建 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 目录
优点 | 描述 |
---|---|
稳定性高 | 进程崩溃后会自动重启 |
易于部署 | 可以通过配置文件快速部署多服务 |
支持日志查看与管理 | 支持日志切割、查看、导出 |
多进程支持 | 自动将服务部署在多个 CPU 核心上,提高性能 |
跨平台 | 支持 macOS / Linux / Windows |
开机自启 | 保证服务上线后自动运行 |
比如在 Next.js、NestJS 或 Vite SSR 项目中,pm2
都可以作为后台启动管理工具使用,替代 node app.js
或 npm run start
等传统方式。