开发者社区> 问答> 正文

Node.js 性能平台是如何进程故障诊断的?

Node.js 性能平台是如何进程故障诊断的?

展开
收起
保持可爱mmm 2020-03-26 20:02:18 489 0
1 条回答
写回答
取消 提交回答
  • 所有诊断操作请顺序执行。一个操作未完成时进行下一个操作会提示操作失败。文件页面转储按钮有效时表明操作已完成(诊断报告数秒可完成,堆快照根据堆大小可能数秒到数分钟,其他操作持续时间为 3 分钟)。 抓取性能数据 进入应用控制台,点击想查看的应用 实例 按钮,进入对应的实例即可查看 Node.js 性能平台提供的 抓取性能数据 功能,如下图所示:

    一般来说,如果涉及到内存泄漏的,可以抓取 堆快照,如果是 CPU 异常飙高的,可以抓取 CPU Profile 数据,下面我们以一个 CPU 异常飙高和内存泄漏的例子来看下如何使用 Node.js 性能平台提供的故障诊断功能。 CPU 异常飙高 发生 CPU 异常飙高时,点击上图中的 CPU Profile 按钮,会在线生成三分钟的 CPU Profile 的日志文件,点击导航栏左侧的 文件 选项,即可看到刚才生成的 CPU Profile 文件,转储至云端后如下图所示:

    Node.js 性能平台提供了两种分析 CPU Profile 的工具,下面逐一介绍: 火焰图 点击上图中的第一个 分析 按钮,则进入火焰图分析,如下图所示:

    很明显,profiling 期间用户编写耗时比较大的函数为 test.js 中的 slow 函数,占据了整个 profiling 时长的 75.5%,所以接下来我们只要去对 slow 函数进行优化就可以了。 devtools 点击上图中的第二个 分析 按钮,则进入 devtools 分析,如下图所示:

    同样,slow 函数执行耗费最久,显然需要优化 内存泄漏 发生内存泄漏时,点击第一节图中的 堆快照 按钮,会在线把当前进程的堆结构 dump 成文件,点击导航栏左侧的 文件 选项,即可看到刚才生成的堆快照文件,转储至云端后如下图所示:

    同样提供了两种分析方式,下面逐一介绍: MAT 分析 点击上图中的第一个 分析 按钮,则进入 MAT 分析,如下图所示:

    可以看到,泄漏点是 test-alinode.js 文件中的一个 array 数组

    2020-03-26 20:02:59
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
穆客带你快速定位Node.js内存泄露 立即下载
Egg— 企业级 Node 框架 立即下载
探究 Node.js 的服务端之路 立即下载