如何对 Node.js 做性能分析(Profiling)?
常用手段:
- perf_hooks:在代码内埋点测耗时
import { performance, PerformanceObserver } from 'perf_hooks'
const obs = new PerformanceObserver(list => console.log(list.getEntries()))
obs.observe({ entryTypes: ['measure'] })
performance.mark('start')
// ...业务...
performance.mark('end')
performance.measure('task', 'start', 'end')- CPU Profiling:
node --prof app.js生成*-v8.log,用--prof-process或chrome://tracing分析热点函数 - clinic.js:
clinic doctor/bubbleprof/heapprofiler一站式诊断 - async_hooks:追踪异步资源生命周期(调试异步泄漏)
生产环境建议采样(不一直开),避免 profiling 本身拖慢服务。