我有一个在aws ubuntu实例上运行的node.js应用程序。我试图使用dtrace
和linux perf tools
生成火焰图,但它们似乎都没有效果。
这些是我要遵循的步骤:
linux perf工具:https://www.carlhopf.com/blog/2016/09/11/nodejs-cpu-profiling-production/
dtrace:https://nodejs.org/en/blog/uncategorized/profiling-node-js/
我在启动linux perf tools命令的应用程序时添加了--prof / --perf_basic_prof_only_functions
。
我从dtrace stacks.out文件获得的输出是:
CPU ID FUNCTION:NAME
0 330511 :tick-60s
在此之后安装dtrace
:https://askubuntu.com/questions/60940/how-do-i-install-dtrace
当我尝试将linux perf命令的输出转换为flamegraph时,我得到的输出是
ERROR: No stack counts found
我不确定缺少什么,为什么没有记录堆栈跟踪。
node version: 8.4.0
ubuntu : 14.04
我确实看到有Systemtap
选项,可以使用此命令:
stap -s 32 -D MAXBACKTRACE=100 -D MAXSTRINGLEN=4096 -D MAXMAPENTRIES=10240 \
-D MAXACTION=10000 -D STP_OVERLOAD_THRESHOLD=5000000000 --all-modules \
-ve 'global s; probe timer.profile { s[backtrace()] <<< 1; }
probe end { foreach (i in s+) { print_stack(i);
printf("\t%d\n", @count(s[i])); } } probe timer.s(60) { exit(); }' \
> out.stap-stacks
但不确定如何使用PID为我正在运行的节点应用程序运行该命令。有没有其他方法可以在ubuntu机器中生成火焰图?