Linux 下 Node.js 性能监控实操指南
一 监控分层与关键指标
- 建议从四个层面建立监控:
- 应用进程:使用 PM2 或 systemd 观察 CPU%、内存 RSS/堆、重启次数、运行时间 等。
- 系统资源:用 top/htop、vmstat、iostat、free、df、nmon/atop 观察 CPU 负载、内存与 Swap、磁盘 I/O、文件系统空间。
- 网络链路:用 Nethogs、iftop 定位 进程级带宽占用 与 网卡实时流量。
- 应用内与 APM:暴露 /health 健康检查,结合 Prometheus + Grafana 或 New Relic/Datadog 获取 HTTP 延迟、吞吐、错误率、依赖调用链 等。
二 快速上手组合 PM2 + systemd + 日志
- PM2 快速监控
- 安装与启动:npm install -g pm2;pm2 start app.js --name my-api
- 常用命令:pm2 list(查看状态)、pm2 monit(资源监控)、pm2 logs my-api(实时日志)、pm2 status(简要状态)
- systemd 托管与可靠性
- 健康检查端点
- 在应用内添加 /health:返回 200 OK 与简要状态,便于 PM2/负载均衡/探针 探测。
三 系统级监控与网络诊断
- 资源总览与瓶颈定位
- htop(交互式进程与资源)、nmon/atop(CPU/内存/磁盘/网络全景)、vmstat 1(系统整体活动)、iostat -x 1(磁盘 I/O)、free -h(内存)、df -h(磁盘空间)
- 网络与依赖排查
- Nethogs(按进程查看带宽)、iftop(网卡实时流量)、必要时配合 tcpdump/Wireshark 抓包分析。
四 深入性能分析与 APM
- 应用内与开发期分析
- node --inspect / --inspect-brk 连接 Chrome DevTools Performance 面板录制 CPU/内存/事件循环;node --prof 与 node --prof-process 做 V8 CPU 采样 与火焰图分析;必要时用 perf/strace 做系统级热点与系统调用追踪。
- 生产级 APM 与可视化
- New Relic、Datadog 提供 事务追踪、错误监控、依赖地图;自建指标可用 prom-client 暴露 /metrics,由 Prometheus 抓取并在 Grafana 可视化。
五 落地检查清单与告警建议
- 进程与重启:配置 Restart=always/RestartSec=,用 pm2 monit 或 systemctl status 观察 OOM/异常退出;必要时设置 内存阈值重启(如 PM2 的 –max-memory-restart)。
- 资源阈值:为 CPU 持续高占用、内存逼近物理内存、磁盘剩余空间不足、磁盘 I/O 饱和 设置 分级告警;结合 nmon/atop 与 iostat 定位瓶颈。
- 网络健康:用 Nethogs/iftop 发现异常连接与带宽占用;对外接口设置 HTTP 5xx/延迟/P95/P99 告警。
- 日志与链路:统一 结构化日志(如 Winston/Morgan),接入 ELK/Graylog/Splunk;关键路径添加 trace-id,配合 APM 做 端到端 追踪。