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.最佳实践总结
- 生产环境优先用 ecosystem.config.js 配置,不用命令行参数;
- 开启 cluster 模式,充分利用多核CPU,提升性能;
- 配置日志轮转和内存限制,避免磁盘爆满、内存泄漏;
- 重启用 pm2 reload,实现零停机更新;
- 定期执行 pm2 save,备份进程列表。
- 应用代码修改后可以reload或者restart,但ecosystem.config.js配置修改后,需要删除pm2的应用,重新执行start;
7.建议日志输出到stdout/stderr,由pm2统一收集和管理,解决多核模式时的写入问题
# 安装日志轮转插件
pm2 install pm2-logrotate
# 配置:单文件100M、保留7天、压缩、每日零点切割
pm2 set pm2-logrotate:max_size 100M
pm2 set pm2-logrotate:retain 7
pm2 set pm2-logrotate:compress true
pm2 set pm2-logrotate:rotateInterval "0 0 * * *"
8.nginx负载+ pm2集群模式时,日志管理问题。
8.1若小型应用,单服务器时,日志不需要集中,可以使用pm2 webUi,可视化查看服务器的日志
8.2若中大型应用
日志分散 → 使用 Loki/Grafana 集中收集、查询、告警
多机器 PM2 无法管理 → 使用 PM2 Plus或PM2 Enterprise
8.3pm2的三种衍生产品对比
| 特性 | PM2 Plus (云端版) | PM2 WebUI (开源版) | PM2 Enterprise (企业版) |
|---|---|---|---|
| 核心定位 | 官方云端监控与管理 | 免费开源的本地 Web 管理面板 | 深度可观测性与企业级运维 |
| 费用 | 付费 (订阅制) | 免费 (开源) | 付费 (企业授权) |
| 部署方式 | SaaS (云端连接) | 自托管 (部署在本地服务器) | 自托管或混合云 |
| 主要功能 | 实时指标、日志聚合、团队通知 | 进程启停、日志查看、基础监控 | 分布式追踪、性能分析、高级告警 |
| 适用场景 | 需要远程监控、团队协作的中小项目 | 个人开发者、追求低成本的团队 | 微服务架构、对稳定性要求极高的大型企业 |
部分内容转载自: https://mp.weixin.qq.com/s/p7Tz6EbXpbprauz8Bghztw
点赞 (0)
欢迎转载:转载时请注明本文出处及文章链接