Node性能分析和排查

2020-01-16  本文已影响0人  杀死BUG

概要

本文主要简述通过V8自带的程序启动选项进行Node性能测试

V8程序启动选项:

分析GC日志

node --trace_gc app.js

内存泄漏排查

通常来说,内存泄漏容易发生在闭包等场景下。针对内存泄漏的调试,可以使用如下命令:

node --trace_gc --trace_gc_verbose app.js

Profile分析

通过 Profile 可以找到具体函数在整个程序中的执行时间和执行时间占比,从而分析到具体的代码问题,V8也提供了Profile日志导出命令

1、prof 提供各个函数的执行占比:

node --prof app.js

执行命令之后,会在该目录下产生一个*-v8.log的日志文件,处理V8 分析器的输出可以采用命令prof-process

node --prof-process isolate-0XXXXXXXXXXX-v8-XXXX.log > profile.txt

2、cpu-prof 包括更加完整的调用栈,可读性更强

node --cpu-prof app.js

方法一:Chrome分析

Chrome自带了分析CPU Profile日志的工具。打开 Chrome -> 调出开发者工具(DevTools) -> 单击右上角三个点的按钮 -> More tools -> JavaScript Profiler -> Load,加载刚才生成的Cpuprofile文件。

方法二:火焰图

个人倾向于speedscope模块,对于Node官方火焰图暂时还没研究透

方法一 :

打开地址https://www.speedscope.app,载入生成的*.cpuprofile即可

方法二:

  1. npm全局安装包speedscope
npm i speedscope -g

2.运行以下命令将cpuprofile文件生成对应文件:

speedscope *.cpuprofile
1236A44C-DE0C-48a2-94F2-D197AA0D6CDE.png

3.用浏览器打开即可

方法三:接入alinode的CPU profile暂时没多做尝试。

上一篇 下一篇

猜你喜欢

热点阅读