美文网首页
Node性能分析和排查

Node性能分析和排查

作者: 杀死BUG | 来源:发表于2020-01-16 16:22 被阅读0次

    概要

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

    V8程序启动选项:

    • max-stack-size 设置栈大小
    • v8-options 打印 V8 相关命令
    • trace-bailout 查找不能被优化的函数,重写
    • trace-deopt 查找不能优化的函数
    • trace-gc GC回收日志
    • prof Profile日志
    • ...

    分析GC日志

    • 在启动程序的时候添加 --trace_gc 参数,V8 在进行垃圾回收的时候,会将垃圾回收的信息打印出来
    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暂时没多做尝试。

    相关文章

      网友评论

          本文标题:Node性能分析和排查

          本文链接:https://www.haomeiwen.com/subject/nwnfzctx.html