1.PM2 核心优势(一站式解决方案)

# PM2 一键搞定
pm2 start app.js        
# 1. 进程守护(崩溃自动重启)
# 2. 多核利用(cluster 模式)
# 3. 日志管理(自动切割归档)
# 4. 监控面板(实时状态查看)
# 5. 零秒重启(无停机热更新)

2.安装与基本使用

# 全局安装(一次安装,终身可用)
npm install pm2 -g

# 启动应用(最简形式,app.js 是你的入口文件)
pm2 start app.js

# 查看所有进程(常用)
pm2 ls  # 或 pm2 list

# 监控面板(可视化查看状态)
pm2 monit

# 查看日志(排查错误超有用)
pm2 logs              # 所有应用日志
pm2 logs app          # 指定应用日志
pm2 logs --lines 100  # 查看最近100行

3.核心进程管理命令

# 启动相关
# 指定应用名,方便管理
pm2 start app.js --name "my-api"
# 启动4个实例(多核利用)
pm2 start app.js -i 4   
# 文件变化自动重启(开发用)
pm2 start app.js --watch            

# 停止/删除相关
pm2 stop app         # 停止指定应用
pm2 stop all         # 停止所有应用
pm2 delete app       # 删除指定应用
pm2 delete all       # 删除所有应用

# 重启相关
pm2 restart app      # 普通重启(先停后启)
pm2 reload app       # 零秒重启(优雅重启,生产首选)

4.用配置文件管理

创建 ecosystem.config.js 文件,统一配置应用参数,适合生产环境:

module.exports = {
apps: [{
    name: 'my-app',          // 应用名
    script: './app.js',      // 入口文件
    instances: 'max',        // 启动所有CPU核心(多核利用)
    exec_mode: 'cluster',    // 开启cluster模式
    max_memory_restart: '1G',// 内存超1G自动重启(防泄漏)
    autorestart: true,       // 崩溃自动重启
    log_date_format: 'YYYY-MM-DD HH:mm:ss', // 日志时间格式
    error_file: '/var/log/pm2/my-app-err.log', // 错误日志路径
    out_file: '/var/log/pm2/my-app-out.log',   // 输出日志路径
    env: {                   // 开发环境配置
      NODE_ENV: 'development',
      PORT: 3000
    },
    env_production: {        // 生产环境配置
      NODE_ENV: 'production',
      PORT: 80
    }
  }]
}

启动命令:pm2 start ecosystem.config.js --env production

5.日志相关

  • 日志轮转:安装 pm2 install pm2-logrotate,防止日志占满磁盘;
  • 进程频繁重启:用 pm2 logs app --lines 50 查看错误原因,大概率是内存泄漏或代码报错;
  • 进程状态异常:用 pm2 describe app 查看详细配置,排查端口冲突或依赖问题。

6.最佳实践总结

  1. 生产环境优先用 ecosystem.config.js 配置,不用命令行参数;
  2. 开启 cluster 模式,充分利用多核CPU,提升性能;
  3. 配置日志轮转和内存限制,避免磁盘爆满、内存泄漏;
  4. 重启用 pm2 reload,实现零停机更新;
  5. 定期执行 pm2 save,备份进程列表。

部分内容转载自:  https://mp.weixin.qq.com/s/p7Tz6EbXpbprauz8Bghztw

点赞 (0)

欢迎转载:转载时请注明本文出处及文章链接