v8-analytics 在 NodeJS 中解析 v8-profiler 和 heapdump 输出的日志
解析 v8-profiler 和 heapdump 等工具输出的 cpu & heap-memory 日志,可以提供
- v8引擎逆优化或者优化失败的函数标红展示以及优化失败原因展示
- 函数执行时长超过预期标红展示
- 当前项目中可疑的内存泄漏点展示
为什么会有两个名字?
v8-analytics
和 v8-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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论