Nodejs 请问 node 怎么进行性能分析?有什么好的分析工具吗?

执行速度方向,查看瓶颈。

--prof 看不到完整的调用栈,调用栈比较深这种方法看不完整吗?


Nodejs 请问 node 怎么进行性能分析?有什么好的分析工具吗?
4 回复

嗯? --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性能分析的方法和工具:

内置分析工具

  1. –inspect和Chrome DevTools

    • 启动方式:node --inspect your-app.js
    • 使用Chrome DevTools的“Performance”选项卡分析CPU和内存使用情况。
  2. prof:Node.js内置的CPU性能分析器,可生成应用运行的性能数据。

    • 启动并生成分析文件:node --prof your-app.js
    • 解析生成的日志:node --prof-process isolate-<id>-v8.log > processed.txt
  3. 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');

第三方工具

  1. PM2:流行的Node.js进程管理工具,提供实时监控和性能分析功能。

  2. Clinic.js:包含Clinic Doctor、Clinic Flame和Clinic Bubbleprof,分别用于检测性能问题、生成火焰图和分析异步代码路径。

  3. heapdump:用于捕获Node.js应用的内存快照,分析内存泄漏。

    const heapdump = require('heapdump');
    heapdump.writeSnapshot('./heapdump.heapsnapshot');
    console.log('Heapdump saved.');

综上所述,Node.js性能分析工具和方法众多,开发者可根据具体需求选择合适的工具进行分析和优化。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!