使用BCC工具对NodeJ响应缓慢的页面进行故障排除

问题描述

我正在尝试了解BCC BPF工具并利用其对Linux Ubuntu 18服务器上生产中的NodeJs应用程序进行故障排除。我能够使用配置文件工具成功诊断cpu高挂起,但是我试图了解如何使用这些工具对IO绑定挂起或cpu低挂起进行故障排除。

我创建了一个测试节点js页面,该页面调用了Azure sql数据库,并且在执行查询时,我故意在sql数据库中引入了10秒的延迟。现在,我正在尝试查看BCC BPF工具是否可以跟踪此延迟,并帮助我在调用数据库时确定我的请求(或页面很慢)。

到目前为止,我已经使用了配置文件工具和offcputime工具,并且都使用了它们,但我无法获得显示跟踪延迟是在远程依赖项调用中的堆栈跟踪。

这些是我执行的命令

使用配置文件工具进行测试时

node --perf_basic_prof bin/www &
/usr/share/bcc/tools/profile -f -F 97 `pgrep -n node` > node.stacks
cat node.stacks | ./flamegraph.pl > nodelowcpu.svg

使用offcputime工具进行测试时

node --perf_basic_prof bin/www &
/usr/share/bcc/tools/offcputime -p `pgrep -n node` > folded.stacks
cat folded.stacks | ./flamegraph.pl > offcpu.svg

生成的堆栈跟踪都没有该功能或没有提及远程sql调用

在这种情况下是否可以使用其他工具。另外,如何解决远程HTTP调用需要较长时间的问题。

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)