Linux 下 Node.js 性能监控实操指南
一 监控体系与分层
二 快速上手步骤
npm i -g pm2;启动 pm2 start app.js --name my-api;查看状态 pm2 status;实时资源监控 pm2 monit;实时日志 pm2 logs my-api;设置自动重启与内存阈值:pm2 set pm2restartdelay 1000、pm2 set pm2maxrestarts 5、pm2 set pm2memoryrestart 100M。top/htop(进程资源)、vmstat 1(系统整体)、iostat -x 1(磁盘)、free -m(内存)、df -h(磁盘空间)、sar -u 1 3(CPU 历史/实时)、nmon/atop(综合监控)。systemd 服务 + journalctl -u my-app 查看 stdout/stderr 与重启原因。node --inspect 或 node --inspect-brk 连接 Chrome DevTools Performance 面板录制;CPU 热点用 node --prof 生成日志并用 node --prof-process 分析;内存泄漏用 heapdump 生成快照并用 DevTools Memory 面板分析。三 关键指标与采集方法
| 维度 | 关键指标 | 采集方式/工具 | 说明 |
|---|---|---|---|
| CPU | 进程 CPU%、系统负载 | top/htop、vmstat、sar -u | 识别计算密集与多核利用情况 |
| 内存 | RSS、堆使用、堆上限、GC 行为 | PM2 monit、process.memoryUsage()、–prof/DevTools | 关注堆增长与频繁 GC |
| 事件循环 | 延迟、阻塞时长 | 应用埋点或 APM | 定位长任务/回调堆积 |
| 请求性能 | P50/P95/P99、吞吐、错误率 | prom-client + Prometheus/Grafana、New Relic/Datadog | 以路由/状态码维度聚合 |
| 文件系统 | 磁盘使用率、IOPS、吞吐 | df、iostat | 日志/上传导致的 I/O 压力 |
| 网络 | 带宽、连接数、重传 | nload/iftop、Nethogs、tcpdump/Wireshark | 发现连接风暴与慢客户端 |
| 依赖服务 | DB 查询耗时、慢查询 | DB 慢查询日志、EXPLAIN | SQL 与索引优化依据 |
四 可视化与告警落地
五 排障流程与优化建议
perf top -p <PID> 找热点函数;strace -p <PID> -c 看系统调用占比;Node 侧用 --prof + DevTools/火焰图确认 JS 执行热点。tcpdump 分析握手/重传与长尾延迟。