哈喽!你提到"pm2使用",是不是正在部署 Node.js 项目,或者想让自己的服务更稳定、更专业地跑在服务器上?😄
别担心,PM2 真的是 Node.js 开发者的好朋友------它能帮你自动重启崩溃的服务、利用多核 CPU 提升性能、集中管理日志,甚至开机自启!
我来给你一个「从零到上线」的实用指南,结合你可能的真实场景👇
✅ 第一步:安装 PM2(全局)
npm install pm2 -g
# 或用 yarn
yarn global add pm2
💡 建议用 nvm 管理 Node 版本,避免权限问题。
✅ 第二步:快速启动你的应用
假设你的入口文件是 app.js:
# 最简单启动
pm2 start app.js
# 更推荐:带名字 + 多实例 + 日志时间戳
pm2 start app.js --name "my-api" -i max --time
--name:给进程起个好记的名字(后面操作都靠它)-i max:开启 集群模式,自动用满 CPU 核心数,提升并发能力--time:日志前面加时间戳,排查问题超方便!
✅ 第三步:日常管理命令(记住这几个就够了)
pm2 list # 查看所有运行中的应用
pm2 logs my-api # 实时看日志(按 Ctrl+C 退出)
pm2 logs my-api --lines 200 # 只看最近200行
pm2 monit # 实时监控 CPU/内存(界面超酷)
pm2 restart my-api # 重启
pm2 reload my-api # 零停机重启(仅 cluster 模式有效!)
pm2 stop my-api # 停止
pm2 delete my-api # 彻底删除
⚠️ 注意:restart 会中断服务,reload 才是生产环境推荐的平滑重启方式!
✅ 第四步:用配置文件(强烈推荐!)
当参数变多时,命令行太乱了。用 ecosystem.config.js 统一管理:
-
生成模板:
pm2 init
-
编辑
ecosystem.config.js:module.exports = {
apps: [{
name: 'my-api',
script: './app.js',
instances: 'max',
exec_mode: 'cluster',
env: {
NODE_ENV: 'development',
PORT: 3000
},
env_production: {
NODE_ENV: 'production',
PORT: 8080
},
max_restarts: 5, // 崩溃太多次就别试了
autorestart: true,
watch: false, // 生产环境一般关掉 watch
error_file: './logs/err.log',
out_file: './logs/out.log'
}]
}; -
启动:
pm2 start ecosystem.config.js --env production
✅ 第五步:生产环境必备技巧
🔒 开机自启(服务器重启后自动拉起服务)
pm2 startup # 按提示执行输出的命令(比如 systemd)
pm2 save # 保存当前进程列表
📁 日志切割(防止日志撑爆磁盘)
pm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size 50M
pm2 set pm2-logrotate:retain 10 # 保留10个旧日志
pm2 set pm2-logrotate:compress true
🔄 平滑部署(配合 Git)
在 ecosystem.config.js 的 deploy 字段配置,或直接用 CI/CD 脚本:
git pull && npm install && pm2 reload ecosystem.config.js --env production
❓常见问题
- Q:怎么知道我的应用是不是在 cluster 模式?
A:pm2 list中如果mode列显示cluster就是;fork是单进程。 - Q:内存泄漏怎么办?
A:加--max-memory-restart 500M,超限自动重启。 - Q:日志太多看不懂?
A:用--time+ 自定义日志格式(如 Winston),再配合pm2-logrotate。
如果你告诉我:
- 你现在用的是什么框架(Express? Koa? NestJS?)
- 是开发环境还是准备上线?
- 有没有遇到具体报错?
我可以给你量身定制一条启动命令,甚至帮你写配置文件!✨
要不要试试看?🙂