Flink 1.13.0 反压监控的优化

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: Flink 1.13.0 版本增加了很多新特征,具体可以参考前面一篇文章,在 Flink 1.13.0 版本之前,我们通常是通过 UI 上面的 BackPressure 或者 Metrics 里面的 inPoolUsage ,outPoolUsage 指标去分析反压出现的位置.在 Flink 1.13.0 版本中对反压监控新增了瓶颈检测,能够帮助我们快速定位反压的位置,因为性能分析的过程中第一个问题就是,哪个操作是瓶颈?为了帮助回答这个问题,Flink 公开了有关任务繁忙(正在执行工作)和反压(具有执行工作的能力,但不能执行任务的原因,因为其后继的算子无法接收更多数据)的度量标准。瓶颈的候选者

Flink 1.13.0 版本增加了很多新特征,具体可以参考前面一篇文章,在 Flink 1.13.0 版本之前,我们通常是通过 UI 上面的 BackPressure 或者 Metrics 里面的 inPoolUsage ,outPoolUsage 指标去分析反压出现的位置.在 Flink 1.13.0 版本中对反压监控新增了瓶颈检测,能够帮助我们快速定位反压的位置,因为性能分析的过程中第一个问题就是,哪个操作是瓶颈?为了帮助回答这个问题,Flink 公开了有关任务繁忙(正在执行工作)和反压(具有执行工作的能力,但不能执行任务的原因,因为其后继的算子无法接收更多数据)的度量标准。瓶颈的候选者是那些繁忙的算子,他们的上游承受了压力,这篇文章主要介绍一下新版本里面如何定位反压位置.


Task performance metrics

任务(subtask)的每个并行实例都公开一组三个指标.


backPressureTimeMsPerSecond,子任务花费的时间


idleTimeMsPerSecond,子任务等待处理数据所花费的时间


busyTimeMsPerSecond,子任务忙于执行一些实际工作的时间在任何时间点,这三个指标的总和大约为1000ms。


这些指标每两秒钟更新一次,上报的值表示在最后几秒钟内子任务受到反压力(或空闲或忙碌)的平均时间。如果您的工作有不同的工作量,请记住这一点。例如,一个恒定负载为 50% 的子任务以及另一个在完全加载和空转之间每秒切换的子任务都将具有相同的 busyTimeMsPerSecond 值:大约 500ms。


在内部,根据输出缓冲区的可用性来判断反压。如果任务没有可用的输出缓冲区,则该任务被视为反压。另一方面,空闲是由是否有可用输入来确定的。


Example

如果你打开新版本的 WEB UI 首先你会发现 DAG 图的蓝色变重了,并且每个 operator 下面多了一个 Backpressured 因为新版本增加了通过不同的颜色来表示 operator 的繁忙或空闲状态,从而更直观的展示出反压的算子,让我们一眼就能看出反压的算子.



为了让任务出现反压,我找了一个 任务,然后把 source 的并行度设置为 4,其余算子的并行度都设置为 1,并且打断了 operator chain,这样更容易观察每个算子的颜色和状态.

然后往上游 kafka 里面生产 500 万数据,因为后面算子的并行度只有 1 很快任务就出现了反压,可以发现 DAG 图中出现了好几种颜色,空闲状态为蓝色,完全反压状态为黑色,完全忙碌状态为红色。所有介于两者之间的值都用这三种颜色之间的阴影来表示。



从上图可以看出,颜色最重的是 Map 算子(倒数第二个),最后一个 window 算子显示红色,说明反压最严重的地方是 Map,所以真正出现反压的位置是 window 算子的 processfunction 方法(最后一个算子)因为 processfunction 处理数据比较慢从而导致了 map 反压,然后逐级向上反压,直到数据源 source 出现反压.这样根据 DAG 的颜色就能判断出反压的位置,不用在去看 BackPressure ,inPoolUsage ,outPoolUsage 指标,更加的简便直观.


SubTasks Back Pressure Status



对于状态为 OK 的 subtask,没有反压的迹象。另一方面,high 表示 subtask 受到反压力。状态通过以下方式定义:


OK: 0% <= back pressured <= 10%


LOW: 10% < back pressured <= 50%


HIGH: 50% < back pressured <= 100%


此外,还会显示每个 subtask 的 Backpressured / Idle / Busy 的时间百分比.


我的这个 Demo 可能还不是很明显,大家可以看一下官网的图




这张图会更明显,反压的位置是在滚动窗口和滑动窗口这两个算子上.

相关实践学习
基于Hologres+Flink搭建GitHub实时数据大屏
通过使用Flink、Hologres构建实时数仓,并通过Hologres对接BI分析工具(以DataV为例),实现海量数据实时分析.
实时计算 Flink 实战课程
如何使用实时计算 Flink 搞定数据处理难题?实时计算 Flink 极客训练营产品、技术专家齐上阵,从开源 Flink功能介绍到实时计算 Flink 优势详解,现场实操,5天即可上手! 欢迎开通实时计算 Flink 版: https://cn.aliyun.com/product/bigdata/sc Flink Forward Asia 介绍: Flink Forward 是由 Apache 官方授权,Apache Flink Community China 支持的会议,通过参会不仅可以了解到 Flink 社区的最新动态和发展计划,还可以了解到国内外一线大厂围绕 Flink 生态的生产实践经验,是 Flink 开发者和使用者不可错过的盛会。 去年经过品牌升级后的 Flink Forward Asia 吸引了超过2000人线下参与,一举成为国内最大的 Apache 顶级项目会议。结合2020年的特殊情况,Flink Forward Asia 2020 将在12月26日以线上峰会的形式与大家见面。
相关文章
|
6月前
|
SQL 算法 调度
Flink批处理自适应执行计划优化
本文整理自阿里集团高级开发工程师孙夏在Flink Forward Asia 2024的分享,聚焦Flink自适应逻辑执行计划与Join算子优化。内容涵盖自适应批处理调度器、动态逻辑执行计划、自适应Broadcast Hash Join及Join倾斜优化等技术细节,并展望未来改进方向,如支持更多场景和智能优化策略。文章还介绍了Flink UI调整及性能优化措施,为批处理任务提供更高效、灵活的解决方案。
202 0
Flink批处理自适应执行计划优化
|
4月前
|
SQL 关系型数据库 MySQL
Flink CDC 3.4 发布, 优化高频 DDL 处理,支持 Batch 模式,新增 Iceberg 支持
Apache Flink CDC 3.4.0 版本正式发布!经过4个月的开发,此版本强化了对高频表结构变更的支持,新增 batch 执行模式和 Apache Iceberg Sink 连接器,可将数据库数据全增量实时写入 Iceberg 数据湖。51位贡献者完成了259次代码提交,优化了 MySQL、MongoDB 等连接器,并修复多个缺陷。未来 3.5 版本将聚焦脏数据处理、数据限流等能力及 AI 生态对接。欢迎下载体验并提出反馈!
741 1
Flink CDC 3.4 发布, 优化高频 DDL 处理,支持 Batch 模式,新增 Iceberg 支持
|
11月前
|
Java 流计算
利用java8 的 CompletableFuture 优化 Flink 程序
本文探讨了Flink使用avatorscript脚本语言时遇到的性能瓶颈,并通过CompletableFuture优化代码,显著提升了Flink的QPS。文中详细介绍了avatorscript的使用方法,包括自定义函数、从Map中取值、使用Java工具类及AviatorScript函数等,帮助读者更好地理解和应用avatorscript。
182 2
利用java8 的 CompletableFuture 优化 Flink 程序
|
11月前
|
存储 缓存 监控
Flink如何优化?需要注意哪些方面?
【10月更文挑战第10天】Flink如何优化?需要注意哪些方面?
329 6
|
6月前
|
存储 SQL Java
Flink CDC + Hologres高性能数据同步优化实践
本文整理自阿里云高级技术专家胡一博老师在Flink Forward Asia 2024数据集成(二)专场的分享,主要内容包括:1. Hologres介绍:实时数据仓库,支持毫秒级写入和高QPS查询;2. 写入优化:通过改进缓冲队列、连接池和COPY模式提高吞吐量和降低延迟;3. 消费优化:优化离线场景和分区表的消费逻辑,提升性能和资源利用率;4. 未来展望:进一步简化用户操作,支持更多DDL操作及全增量消费。Hologres 3.0全新升级为一体化实时湖仓平台,提供多项新功能并降低使用成本。
485 1
Flink CDC + Hologres高性能数据同步优化实践
|
消息中间件 监控 关系型数据库
实时计算 Flink版产品使用问题之运行后,怎么进行监控和报警
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
机器学习/深度学习 监控 Serverless
Serverless 应用的监控与调试问题之Flink在内部使用的未来规划,以及接下来有什么打算贡献社区的创新技术
Serverless 应用的监控与调试问题之Flink在内部使用的未来规划,以及接下来有什么打算贡献社区的创新技术
|
机器学习/深度学习 监控 大数据
Serverless 应用的监控与调试问题之Flink在整个开源大数据生态中应该如何定位,差异化该如何保持
Serverless 应用的监控与调试问题之Flink在整个开源大数据生态中应该如何定位,差异化该如何保持
|
存储 监控 Serverless
Serverless 应用的监控与调试问题之Pravega和Flink实现端到端的auto-scaling要如何操作
Serverless 应用的监控与调试问题之Pravega和Flink实现端到端的auto-scaling要如何操作
|
SQL 监控 大数据
Serverless 应用的监控与调试问题之Flink流式数仓对于工商银行的数据链路要如何简化
Serverless 应用的监控与调试问题之Flink流式数仓对于工商银行的数据链路要如何简化