如何生成 Flink 作业的交互式火焰图?

本文介绍了如何使用jvm-profiler为Flink作业生成交互式火焰图,以便于性能优化。通过火焰图,可以清晰查看函数调用栈和时间占比,帮助定位性能瓶颈。文章详细阐述了下载、编译jvm-profiler,下载FlameGraph,以及如何配置Flink以生成和查看火焰图。
摘要由CSDN通过智能技术生成

前言

Flink 是目前最流行的大数据及流式计算框架之一,用户可以使用 Java/Scala/Python 的 DataStream 接口或者标准 SQL 语言来快速实现一个分布式高可用的流式应用,通过内部的 Java JIT、off-heap 内存管理等技术优化性能,并且有完整的 Source、Sink、WebUI、Metrics 等功能集成,让 Flink 几乎成为了流式计算的事实标准。

但是当处理海量数据的时候,很容易出现各种异常和性能瓶颈,这时我们需要优化系统性能时,常常需要分析程序运行行为和性能瓶颈。Profiling 技术是一种在应用运行时收集程序相关信息的动态分析手段,常用的 JVM Profiler 可以从多个方面对程序进行动态分析,如 CPU、Memory、Thread、Classes、GC 等,其中 CPU Profiling 的应用最为广泛。CPU Profiling 经常被用于分析代码的执行热点,如“哪个方法占用 CPU 的执行时间最长”、“每个方法占用 CPU 的比例是多少”等等,通过 CPU Profiling 得到上述相关信息后,研发人员就可以轻松针对热点瓶颈进行分析和性能优化,进而突破性能瓶颈,大幅提升系统的吞吐量。

本文介绍我们在做性能优化常用的火焰图以及为如何集成火焰图到通用的 Flink 作业中。

火焰图介绍

火焰图是《性能之巅》作者以及 DTrace 等一系列 Linux 系统优化工具作者 Brendan Gregg 大神的作品之一,可以非常清晰地展示应用程序的函数调用栈以及函数调用时间占比,基本原理是通过各种 agent 在程序运行时采样并输出日志,使用 FlameGraph 工具把日志提取出来输出可在浏览器交互式查看的 SVG图片。

Uber 开源了 jvm-profiler 项目,介绍如何为 Spark 应用和 Java 应用添加火焰图支持࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值