277 字
1 分钟
Node.js 性能调优:Event Loop 监控与内存泄漏排查

为什么 Node.js 会慢?#

Node.js 是单线程事件驱动的。这意味着任何阻塞主线程的操作(哪怕只有几毫秒)都会导致所有请求延迟增加。

常见的性能杀手:

  1. JSON.parse/stringify 处理巨型对象。
  2. 正则回溯 (ReDoS)
  3. 同步文件 IO

监控 Event Loop 延迟#

要量化“卡顿”,最直接的指标是 Event Loop Lag

我们可以使用 perf_hooks 来测量:

const { monitorEventLoopDelay } = require('perf_hooks');
const h = monitorEventLoopDelay({ resolution: 20 });
h.enable();
setInterval(() => {
console.log(`Min: ${h.min}, Max: ${h.max}, Mean: ${h.mean}`);
}, 1000);

如果 Max 延迟经常超过 100ms,说明你的服务已经处于亚健康状态了。

内存泄漏排查三板斧#

  1. Heap Dump:使用 heapdump 库生成快照。
  2. Chrome DevTools:将快照导入 Chrome,使用 “Comparison” 视图对比前后两个快照,看哪些对象在持续增加。
  3. 弱引用 (WeakRef):在调试环境中使用弱引用检查对象是否被回收(仅限调试,不要用于生产逻辑)。

结语#

性能优化不是玄学,是数据驱动的科学。不要盲目猜测,先监控,再定位,最后优化。

Node.js 性能调优:Event Loop 监控与内存泄漏排查
https://www.oferry.com/posts/a21/
作者
辉哥
发布于
2026-02-04
许可协议
CC BY-NC-SA 4.0
封面
示例歌曲
示例艺术家
封面
示例歌曲
示例艺术家
0:00 / 0:00