Linux 下 Node.js 性能监控实操指南

Linux Node.js应用如何进行性能监控

做性能监控,最怕的不是没有工具,而是工具太多不知道怎么搭。今天咱们把Linux下Node.js性能监控这件事拆开揉碎了说,从底层指标到上层告警、从日常查看到故障排查,一步到位。

一 监控体系与分层

把监控拆开来看,其实很清晰:系统层、进程层、应用层、日志与链路层、可视化告警层——这五层搭起来,才能形成一个完整的闭环。少任何一层,都容易在定位问题时两眼一抹黑。

常见的工具,我帮你列在这儿,随便翻翻看——

二 快速上手步骤

先说进程与日志。用PM2启动和守护服务是最简单的一条路:

系统资源这块,日常巡检几行命令就够:

这些都是经验证的老牌命令,可靠、轻量、不花哨。

运行与故障排查方面,推荐两条路:

三 关键指标与采集方法

下面这张表,建议你收藏。它把每个维度该看什么、怎么采、用什么工具,都串起来了。

维度 关键指标 采集方式/工具 说明
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曲线,设置告警阈值。这一步做完,接口性能波动就能即时感知了。

四 可视化与告警落地

落地方式主要有三种,看团队情况选:

五 排障流程与优化建议

遇到问题了,别慌,按症状找工具,一步步来。

最后,优化方向上,有几个核心原则:

把这些做到位,性能监控就算真正闭环了。

本文转载于:https://www.yisu.com/ask/29702858.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。