什么是 PM2?
PM2(Process Manager 2)是一个用于 Node.js 应用程序的强大进程管理器。它不仅能够启动和重启应用程序,还提供了内置的性能监控、集群管理以及实时指标收集工具。
为什么需要 PM2?
在部署 Node.js 生产级应用时,会遇到以下需求:故障时自动重启、CPU 核心间的负载均衡、日志查看以及内存/CPU 使用情况跟踪。PM2 开箱即用地解决了所有这些需求,取代了多个工具(如 nodemon、forever、cluster)。
安装
npm install -g pm2全局安装允许你在系统的任何位置运行 PM2。
主要监控功能
- pm2 list — 显示所有正在运行的进程,包括 PID、状态、内存和 CPU 消耗。
- pm2 monit — 交互式终端监控器,实时显示每个进程的指标。
- pm2 show <id> — 特定进程的详细信息:运行时间、重启次数、Node.js 版本、环境变量。
- pm2 logs — 查看所有应用程序或特定进程的合并日志。
- pm2 status — 所有应用程序的简要状态。
代码示例(Node.js)
创建一个文件 app.js:
const http = require('http');const server = http.createServer((req, res) => { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello from monitored app!');});server.listen(3000, () => { console.log('Server running on port 3000');});启动并启用监控:
pm2 start app.js --name my-app --watchpm2 monit标志 --watch 会在文件发生变化时自动重启应用程序。命令 pm2 monit 将打开一个面板,你可以在其中看到 CPU 负载、内存、请求数量和运行时间。
何时使用
PM2 非常适合生产环境:Web 服务器(Express、Koa)、API 服务、机器人、微服务。当需要以下功能时,它不可或缺:
- 确保应用程序 24/7 运行
- 故障后自动重启
- 将应用程序扩展到所有处理器核心
- 收集指标以供后续分析
- 集中管理日志
PM2 不适用于一次性脚本或本地开发(这种情况下 nodemon 更合适)。
结论
PM2 是监控 Node.js 应用程序的事实标准。它安装简单,提供丰富的指标集,并且可以轻松与告警系统集成(通过插件)。从 pm2 monit 开始,实时查看应用程序的健康状况。