如何在 CentOS 上生成 Node.js 火焰图?

Posted

技术标签:

【中文标题】如何在 CentOS 上生成 Node.js 火焰图?【英文标题】:How to generate a Node.js flame graph on CentOS? 【发布时间】:2012-10-24 16:35:01 【问题描述】:

我想generate a flame graph for my node.js app。不幸的是,我的开发箱是 OSX(不支持 utrace 助手,根据链接的文章),而我的生产箱是 CentOS(甚至没有 dtrace)。

我发现了一些类似 SystemTap might be a dtrace alternative 的迹象,但我无法拼凑出一种有效的工作方式来生成适当的 stacks.out 文件以输入到 stackvis 中。

有人知道如何启动和运行它的体面教程吗?我更喜欢在 CentOS 上使用它(这样我可以检查我的生产应用程序),但 OSX 也足够了。

【问题讨论】:

第一个链接坏了。可能是这个? dtrace.org/blogs/dap/2012/01/05/… @cuberoot 这也是一篇好文章。不过,官方 Node.js 博客文章是我链接到的一篇,但它似乎已关闭。这是缓存版本:webcache.googleusercontent.com/… 【参考方案1】:

从最新的谷歌搜索来看,人们对 Centos 上的 SystemTap 不满意,但这里有一篇文章 http://dtrace.org/blogs/brendan/2012/03/17/linux-kernel-performance-flame-graphs/ 被某人的 FlameGraph github 项目 https://github.com/brendangregg/FlameGraph 引用

我想说的是走向真正的解决方案,安装 dtrace 而不是依赖解决方法。

【讨论】:

【参考方案2】:

在 Linux 上,perf_events 分析器可用于对堆栈跟踪进行采样,并支持 JIT 符号。对于 node.js,您需要使用 v8 选项 --perf-basic-prof 运行 0.11.13 或更高版本。该选项为 perf 使用的符号转换创建一个 /tmp/perf-PID.map 文件。使用 javascript 符号对堆栈跟踪进行性能分析后,您可以在“性能脚本”的输出上使用 stackcollapse-perf.pl(来自 FlameGraph 存储库)创建火焰图。

我在这里写了完整的说明:http://www.brendangregg.com/blog/2014-09-17/node-flame-graphs-on-linux.html

【讨论】:

以上是关于如何在 CentOS 上生成 Node.js 火焰图?的主要内容,如果未能解决你的问题,请参考以下文章

通过火焰图分析 Node.js 性能(Mac 上)

JWT Token 不会在 Heroku 上生成

使用 --perf_basic_prof_only_functions 构建多个 node.js 进程的火焰图

centos7.4 openresty-1.15.8.2 火焰图安装测试

BigQuery / Node.js 时间戳太远了

在 Laravel 中验证 Node 生成的 JWT