跳到主要内容

profiling

性能分析与定位

CPU/内存/事件循环延迟的可观测性,工具链包含内置 inspector、Chrome DevTools、clinic.js 等。

要点

  • CPU 分析:--cpu-prof、inspector、0x、clinic flame;
  • 堆与泄漏:堆快照、--heap-profleakage/memlab 等;
  • 事件循环延迟:perf_hooks.monitorEventLoopDelay
  • 跟踪:async_hooks 与 AsyncLocalStorage;
  • 指标:p99 延迟、RPS、错误率与背压信号。

示例:CPU/堆分析(最小侵入)

node --cpu-prof app.js     # 生成 isolate-*.cpuprofile
node --heap-prof app.js # 采集堆快照

在 Chrome DevTools → Performance/Memory 打开文件查看火焰图与分配情况。

示例:Inspector 与 Clinic

node --inspect=0.0.0.0:9229 app.js  # DevTools 远程调试
npx clinic flame -- node app.js # 采集 CPU 火焰图

事件循环延迟监控

const { monitorEventLoopDelay } = require('perf_hooks');
const h = monitorEventLoopDelay();
h.enable();
setInterval(() => console.log('p99(ms)=', (h.percentile(99)/1e6).toFixed(1)), 1000);

定位流程示例:先看指标(CPU/内存/EL 迟滞)→ 采样 CPU/堆 → 关联路由与外部依赖 → 重放最小复现。