方式一 使用 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 頁面中找到火焰圖文件并下載