Nodejs 请问 node 怎么进行性能分析?有什么好的分析工具吗?
执行速度方向,查看瓶颈。
--prof 看不到完整的调用栈,调用栈比较深这种方法看不完整吗?
Nodejs 请问 node 怎么进行性能分析?有什么好的分析工具吗?
嗯? --inspect 不满足需求么?
不知道为什么 chrome 调试里面没办法加载对应的文件。导致没法断点。
node 调用了 a.js 脚本,然后调用 B js 工程,然后加载 C ts/js 工程,只加载了 C 的少部分 ts 入口文件。
b 的 js 工程 加载 c 的 ts 工程,只有声明文件,我估计 c 的工程没有 source map 吧
如果你要调试 c 的 ts 工程,需要调试编译后的 js 文件(需要 source map )同时要找 ts 的调试方式
不同的 ts 版本调试方式也不一样
一般来说要么配置 vscode 的调试模式单独从入口去启 ts 工程,要么使用 ts-node, 总之和 node.js 多少有些区别
Node.js的性能分析是确保应用高效运行的关键步骤。以下是一些Node.js性能分析的方法和工具:
内置分析工具
-
–inspect和Chrome DevTools:
- 启动方式:
node --inspect your-app.js
。 - 使用Chrome DevTools的“Performance”选项卡分析CPU和内存使用情况。
- 启动方式:
-
prof:Node.js内置的CPU性能分析器,可生成应用运行的性能数据。
- 启动并生成分析文件:
node --prof your-app.js
。 - 解析生成的日志:
node --prof-process isolate-<id>-v8.log > processed.txt
。
- 启动并生成分析文件:
-
perf_hooks:提供更细粒度的性能监控,可获取事件循环阶段耗时、函数执行时间等。
const { performance, PerformanceObserver } = require('perf_hooks'); const obs = new PerformanceObserver((items) => { console.log(items.getEntries()[0].duration); performance.clearMarks(); }); obs.observe({ entryTypes: ['function'] }); performance.mark('start'); // 耗时任务 performance.mark('end'); performance.measure('task1', 'start', 'end');
第三方工具
-
PM2:流行的Node.js进程管理工具,提供实时监控和性能分析功能。
-
Clinic.js:包含Clinic Doctor、Clinic Flame和Clinic Bubbleprof,分别用于检测性能问题、生成火焰图和分析异步代码路径。
-
heapdump:用于捕获Node.js应用的内存快照,分析内存泄漏。
const heapdump = require('heapdump'); heapdump.writeSnapshot('./heapdump.heapsnapshot'); console.log('Heapdump saved.');
综上所述,Node.js性能分析工具和方法众多,开发者可根据具体需求选择合适的工具进行分析和优化。