v8-analytics 在 NodeJS 中解析 v8-profiler 和 heapdump 输出的日志

发布于 2021-11-14 16:47:19 字数 2425 浏览 1272 评论 0

解析 v8-profiler 和 heapdump 等工具输出的 cpu & heap-memory 日志,可以提供

  • v8引擎逆优化或者优化失败的函数标红展示以及优化失败原因展示
  • 函数执行时长超过预期标红展示
  • 当前项目中可疑的内存泄漏点展示

为什么会有两个名字?

v8-analyticsv8-cpu-analysis 是完全等价的两个包,两者没有任何区别。

起因是想对 v8-cpu-analysis 引入 v8 的堆内内存结构分析,这样子继续在包名中引入 cpu 字样就不太合适了,所以改了个包名,为了兼容以前,故采用两者完全等价发布的方式。

安装

全局安装

$ npm install v8-analytics -g

或者

$ npm install v8-cpu-analysis -g

嵌入你的JS代码

$ npm install v8-analytics

或者

$ npm install v8-cpu-analysis

测试样例

如果你是全局安装的命令行模式:

//测试展示v8引擎逆优化函数
$ va test bailout
$ va test bailout --only
//测试展示执行时长超过你的预期函数
$ va test timeout
$ va test timeout 200
$ va test timeout 200 --only
$ va test leak

va test bailout --only 这个命令可以只把那些v8引擎逆优化的函数列出来展示。

va test timeout 200 --only 这个命令可以只把那些执时长超过200ms的函数列出来展示。

va test leak 可疑展示出测试的heapsnapshot文件中可疑的内存泄漏点。

快速开始

这个npm包可以即用作于全局命令行模式,也可以嵌入你的JS代码:

I. 命令行

查找函数逆优化原因

这里的 xxx.cpu.json 文件是有v8-profiler生成的cpu日志文件:

$ va bailout xxx.cpu.json

这里会展示出所有的函数,并且把其中触发v8引擎逆优化的函数标红,你也可以像下面这样使用:

$ va bailout xxx.cpu.json --only

这样子就只会展示逆优化的函数以及v8给出的逆优化原因。

发现那些执行时长超过预期的函数

$ va timeout xxx.cpu.json

这样会展示出所有的函数,以及其执行时长

$ va timeout xxx.cpu.json 200

这样使用除了会展示出所有的函数,还会将所有的执行时长超过200ms的函数给标红展示出来。

$ va timeout xxx.cpu.json 200 --only

这样使用只会将所有的执行时长超过200ms的函数列出来展示。

找出可疑的内存泄漏点

$ va leak xxx.mem.json

这样使用可以列出当前Node项目中可疑的内存泄漏点。

II. 嵌入你的 JS 代码

'use strict';
const fs = require('fs');
const v8Analytics = require('v8-analytics');
//or you can use following, they're equival
//const v8Analytics = require('v8-cpu-analysis');

//list all js function and it's execTime
const json = JSON.parse(fs.readFileSync('./test.cpu.json'));
const str = v8Analytics(json);
console.log(str);

//list you heap memory info
const json = JSON.parse(fs.readFileSync('./test.mem.json'));
const {leakPoint, heapMap, statistics} = analysisLib.memAnalytics(allData)

相关链接

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84961 人气
更多

推荐作者

醉城メ夜风

文章 0 评论 0

远昼

文章 0 评论 0

平生欢

文章 0 评论 0

微凉

文章 0 评论 0

Honwey

文章 0 评论 0

qq_ikhFfg

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文