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 应用的生产部署需求。