HIGH_FREQUENCY_MODE

NextBlog
NEXT.

下一个博客,记录精彩生活

LIVE_STREAM_CONNECTED

PM2 安装使用与进阶指南

A

Mastermind

admin

Dimension

Linux

Timestamp

2025年12月20日

PM2 是 Node.js 应用的生产级进程管理器,提供负载均衡、自动重启、日志管理等强大功能。

安装

# 全局安装
npm install pm2 -g

# 或使用 yarn
yarn global add pm2

基础使用

启动应用

# 启动单个应用
pm2 start app.js

# 指定应用名称
pm2 start app.js --name "my-app"

# 启动并监听文件变化(开发环境)
pm2 start app.js --watch

# 指定实例数量(集群模式)
pm2 start app.js -i 4

# 使用所有 CPU 核心
pm2 start app.js -i max

常用命令

# 查看所有进程
pm2 list

# 查看详细信息
pm2 show <app-name>

# 停止应用
pm2 stop <app-name>

# 重启应用
pm2 restart <app-name>

# 删除应用
pm2 delete <app-name>

# 停止所有应用
pm2 stop all

# 重启所有应用
pm2 restart all

日志管理

# 查看所有日志
pm2 logs

# 查看指定应用日志
pm2 logs <app-name>

# 清空日志
pm2 flush

# 实时日志(最近 200 行)
pm2 logs --lines 200

进阶配置

配置文件 (ecosystem.config.js)

创建配置文件可以更灵活地管理应用:

// ecosystem.config.js
module.exports = {
  apps: [
    {
      name: 'my-app',
      script: './app.js',
      instances: 'max',
      exec_mode: 'cluster',
      watch: false,
      max_memory_restart: '1G',
      env: {
        NODE_ENV: 'development',
        PORT: 3000
      },
      env_production: {
        NODE_ENV: 'production',
        PORT: 8080
      }
    }
  ]
}

使用配置文件启动:

# 开发环境
pm2 start ecosystem.config.js

# 生产环境
pm2 start ecosystem.config.js --env production

开机自启动

# 生成启动脚本
pm2 startup

# 保存当前进程列表
pm2 save

# 取消开机自启
pm2 unstartup

监控与性能

# 实时监控面板
pm2 monit

# 查看进程详情
pm2 describe <app-name>

# 重置计数器
pm2 reset <app-name>

零停机重载

# 平滑重载(集群模式下)
pm2 reload <app-name>

# 重载所有应用
pm2 reload all

实用技巧

1. 内存限制自动重启

{
  max_memory_restart: '500M'
}

2. 定时重启

{
  cron_restart: '0 3 * * *'  // 每天凌晨 3 点重启
}

3. 错误自动重启配置

{
  max_restarts: 10,
  min_uptime: '5s',
  restart_delay: 4000
}

4. 日志配置

{
  error_file: './logs/error.log',
  out_file: './logs/out.log',
  log_date_format: 'YYYY-MM-DD HH:mm:ss',
  merge_logs: true
}

常见问题

应用频繁重启

检查以下几点:

  • 内存是否超限
  • 是否有未捕获的异常
  • 查看 pm2 logs 定位错误

集群模式下 Session 问题

使用 Redis 等外部存储管理 Session,避免进程间状态不共享。

端口冲突

确保每个应用使用不同端口,或使用 PORT 环境变量动态分配。

总结

PM2 核心功能:

  • 进程守护与自动重启
  • 集群模式负载均衡
  • 日志集中管理
  • 开机自启动
  • 零停机部署

掌握这些内容,足以应对大多数 Node.js 应用的生产部署需求。

评论

加载评论中...
Spirit Sync

"正在同步你的多巴胺频率,建立高维链接..."