方式一 使用 Flink Web UI 的 Flame Graph
Flink 自己也支持了 Task 粒度的 Flame Graphs 功能,并且可以细化到 subtask 粒度。
第一步:配置启用功能
Flink 作业动态参数里增加配置:“rest.flamegraph.enabled”: “true” 并重启作业。当前该功能没有默认开启,因为这个功能使用时对性能有少量损耗,特别是对于并行度比较大的作业。
第二步: 在 Web UI 上选中想要探查的算子,打开 FlameGraph 面板
方式二 使用 Arthas 打印火焰图
第一步:通过 WebShell 查看 container 的 IP 和 PID第二步:下载 Arthas, 并绑定 container 的 PID 启动
# Godel/K8S 下默认打包了 arthas,可以直接使用
ls /opt/tiger/arthas/arthas-boot.jar
# 历史作业或者 yarn 环境下没有默认打包,可以主动下载 Arthas
curl -O https://arthas.aliyun.com/arthas-boot.jar# 绑定 PID 启动
java -jar arthas-boot.jar ${PID}
第三步:使用 profiler 命令打印火焰图
[arthas@327]$ profiler start
Profiling started
[arthas@327]$ profiler stop
OK
profiler output file: /opt/tiger/workdir/arthas-output/20220822-180615.html
[arthas@327]$ exit
第四步:将火焰图文件移动至 Flink 日志目录下
第五步 在 Flink WebUI JM/TM 的 Log List 页面中找到火焰图文件并下载