运维人员在SQL运行效率慢或卡住的情况时,通常需要通过查看计算引擎的server、executor的jstack来排查此时引擎正在干什么,卡在了哪行代码,定位线程长时间停顿的原因。虽然有一些性能分析工具可以帮助运维人员去排查问题,但是这类工具通常会给用户展示大量的细节信息和数据,需要花费大量时间跟精力来优化可能并不重要的地方。
火焰图(Flame Graph)是由 Linux 性能优化大师 Brendan Gregg 发明的一种类似于火焰状的全景图,可以根据集群信息定量展示出所有可能导致性能瓶颈,可以快速帮助运维人员查看函数执行的频繁程度、哪些函数经常阻塞以及分析程序的性能瓶颈等等。(火焰图介绍)
火焰图整体如一团跳动的火焰一般,这就是它名字的由来:
需要注意以下几点:
星环多模型运维监控平台Aquila Insight 引入了性能分析利器火焰图(Flame Graphs),用户可以直接通过Insight server的可视化界面进行查看 (目前仅限TDH商业版以及社区订阅版提供)。
除此之外,Github上有 Brendan D. Gregg 的 Flame Graph 工程实现了一套生成火焰图的脚本.我们也可以直接克隆下来直接用,遵循以下流程:
# git clone https://github.com/brendangregg/FlameGraph.git
① 捕获堆栈
使用perf捕捉进程运行堆栈信息
② 折叠堆栈
# perf script -i /root/perf.data &> /root/perf.unfold
③ 用 stackcollapse-perf.pl 将 perf 解析出的内容 perf.unfold 中的符号进行折叠
# ./stackcollapse-perf.pl /root/perf.unfold &> /root/perf.folded
④ 生成火焰图
./flamegraph.pl /root/perf.folded > /root/perf.svg
⑤ 浏览器打开。
火焰图因为是 svg 图片,所以用户可以通过以下形式进行互动:
运维人员在SQL运行效率慢或卡住的情况时,通常需要通过查看计算引擎的server、executor的jstack来排查此时引擎正在干什么,卡在了哪行代码,定位线程长时间停顿的原因。虽然有一些性能分析工具可以帮助运维人员去排查问题,但是这类工具通常会给用户展示大量的细节信息和数据,需要花费大量时间跟精力来优化可能并不重要的地方。
火焰图(Flame Graph)是由 Linux 性能优化大师 Brendan Gregg 发明的一种类似于火焰状的全景图,可以根据集群信息定量展示出所有可能导致性能瓶颈,可以快速帮助运维人员查看函数执行的频繁程度、哪些函数经常阻塞以及分析程序的性能瓶颈等等。(火焰图介绍)
火焰图整体如一团跳动的火焰一般,这就是它名字的由来:
需要注意以下几点:
星环多模型运维监控平台Aquila Insight 引入了性能分析利器火焰图(Flame Graphs),用户可以直接通过Insight server的可视化界面进行查看 (目前仅限TDH商业版以及社区订阅版提供)。
除此之外,Github上有 Brendan D. Gregg 的 Flame Graph 工程实现了一套生成火焰图的脚本.我们也可以直接克隆下来直接用,遵循以下流程:
# git clone https://github.com/brendangregg/FlameGraph.git
① 捕获堆栈
使用perf捕捉进程运行堆栈信息
② 折叠堆栈
# perf script -i /root/perf.data &> /root/perf.unfold
③ 用 stackcollapse-perf.pl 将 perf 解析出的内容 perf.unfold 中的符号进行折叠
# ./stackcollapse-perf.pl /root/perf.unfold &> /root/perf.folded
④ 生成火焰图
./flamegraph.pl /root/perf.folded > /root/perf.svg
⑤ 浏览器打开。
火焰图因为是 svg 图片,所以用户可以通过以下形式进行互动: