发布于2026-07-13 阅读(0)
扫一扫,手机访问
Linux 下 Node.js 性能监控实操指南

做性能监控,最怕的不是没有工具,而是工具太多不知道怎么搭。今天咱们把Linux下Node.js性能监控这件事拆开揉碎了说,从底层指标到上层告警、从日常查看到故障排查,一步到位。
把监控拆开来看,其实很清晰:系统层、进程层、应用层、日志与链路层、可视化告警层——这五层搭起来,才能形成一个完整的闭环。少任何一层,都容易在定位问题时两眼一抹黑。
常见的工具,我帮你列在这儿,随便翻翻看——
先说进程与日志。用PM2启动和守护服务是最简单的一条路:
npm i -g pm2pm2 start app.js --name my-apipm2 statuspm2 monitpm2 logs my-apipm2 set pm2restartdelay 1000、pm2 set pm2maxrestarts 5、pm2 set pm2memoryrestart 100M。这一步对于防止内存泄漏长期拖垮系统,非常关键。系统资源这块,日常巡检几行命令就够:
top/htopvmstat 1iostat -x 1free -mdf -hsar -u 1 3nmon/atop这些都是经验证的老牌命令,可靠、轻量、不花哨。
运行与故障排查方面,推荐两条路:
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与索引优化依据 |
举个例子,用prom-client暴露出HTTP请求的时延直方图,你可以像这样写:
const promClient = require('prom-client');
const httpRequestDurationMicroseconds = new promClient.Histogram({
name: 'http_request_duration_ms',
help: 'Duration of HTTP requests in ms',
labelNames: ['method', 'route', 'code'],
buckets: [0.1, 5, 15, 50, 100, 200, 300, 400, 500]
});
app.use((req, res, next) => {
const start = Date.now();
res.on('finish', () => {
const duration = Date.now() - start;
httpRequestDurationMicroseconds
.labels(req.method, req.route?.path || req.path, res.statusCode)
.observe(duration);
});
next();
});
然后在Prometheus里配上抓取任务,再到Grafana里拉出P50/P95/P99曲线,设置告警阈值。这一步做完,接口性能波动就能即时感知了。
落地方式主要有三种,看团队情况选:
遇到问题了,别慌,按症状找工具,一步步来。
perf top -p 找热点函数,用strace -p -c 看系统调用占比。Node侧,用--prof配合DevTools或火焰图,找到JS执行热点。这步走完,代码层面的瓶颈基本上就暴露了。最后,优化方向上,有几个核心原则:
把这些做到位,性能监控就算真正闭环了。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8