PM2模块
PM2 是一个流行的 Node.js 进程管理器,用于在生产环境中管理、监控和守护 Node.js 应用。它提供了进程守护、负载均衡、日志管理、性能监控等功能,极大简化了 Node.js 应用的部署和维护。
PM2 核心功能
1. 进程守护(Daemon)
-
如果 Node.js 应用崩溃,PM2 会自动重启它,确保服务高可用。
-
适合生产环境,避免手动重启服务。
2. 负载均衡(Cluster Mode)
-
支持多进程模式(利用多核 CPU),提升应用性能。
-
示例:
pm2 start app.js -i 4 # 启动4个进程(根据CPU核心数自动优化)
3. 日志管理
-
自动记录应用日志(
stdout
和stderr
),支持日志分割和查看。 -
示例:
pm2 logs # 查看实时日志 pm2 logs --lines 100 # 查看最近100行日志
4. 监控(Monitoring)
-
实时监控 CPU、内存占用等指标:
pm2 monit
-
生成性能报告:
pm2 show <app_name>
5. 开机自启动
-
让 PM2 管理的应用在服务器重启后自动运行:
pm2 startup # 生成启动脚本 pm2 save # 保存当前进程列表
6. 环境变量管理
-
支持不同环境(如
development
/production
)配置:pm2 start app.js --env production
PM2 基本使用
安装
npm install pm2 -g # 全局安装
常用命令
命令 | 说明 |
---|---|
pm2 start app.js | 启动应用 |
pm2 list | 查看运行中的进程 |
pm2 stop <app_name> | 停止应用 |
pm2 restart <app_name> | 重启应用 |
pm2 delete <app_name> | 删除应用 |
pm2 reload all | 零停机重启(适用于集群模式) |
pm2 flush | 清空日志 |
PM2 高级用法
1. 配置文件(ecosystem.config.js
)
-
适用于复杂部署(多应用、环境变量、集群模式等)。
-
示例:
module.exports = {apps: [{name: "my-app",script: "app.js",instances: "max", // 使用所有CPU核心env: {NODE_ENV: "development",},env_production: {NODE_ENV: "production",}}] };
-
启动方式:
pm2 start ecosystem.config.js --env production
2. 远程部署(PM2 Deploy)
-
支持通过 SSH 在多台服务器上部署应用(类似 CI/CD)。
-
示例配置:
module.exports = {deploy: {production: {user: "root",host: ["server1.com", "server2.com"],ref: "origin/main",repo: "git@github.com:user/repo.git",path: "/var/www/my-app","post-deploy": "npm install && pm2 reload ecosystem.config.js"}} };
-
执行部署:
pm2 deploy production
PM2 vs 其他工具
工具 | 适用场景 | 特点 |
---|---|---|
PM2 | Node.js 生产环境 | 进程守护、集群模式、日志管理 |
nodemon | 开发环境 | 文件变更自动重启,不适合生产 |
forever | 简单守护 | 功能较少,不如 PM2 强大 |
总结
✅ PM2 是 Node.js 生产级进程管理工具,适用于:
-
需要 高可用(自动重启崩溃的进程)
-
需要 负载均衡(多核 CPU 优化)
-
需要 日志管理 & 监控
-
需要 开机自启动
🚀 推荐使用 ecosystem.config.js
管理复杂应用,结合 pm2 deploy
实现自动化部署。