image

编辑人: 流年絮语

calendar2025-01-15

message8

visits2145

Flink 任务出现很高的延迟,你会如何入手解决类似问题?

分析&回答

在 Flink 的后台任务管理中,可以看到 Flink 的哪个算子和 task 出现了反压;

源调优和算子调优: 资源调优即对作业中的 Operator 并发数(Parallelism)、CPU(Core)、堆内存(Heap_memory)等参数进行调优;

作业参数调优:并行度的设置、State 的设置、Checkpoint 的设置。

反思&扩展

如何排查生产环境中的反压问题?

image-1691396368274

1、反压产生的场景

反压经常出现在促销、热门活动等场景。短时间内流量陡增造成数据的堆积或者消费速度变慢

它们有一个共同的特点:数据的消费速度小于数据的生产速度。

2、反压危害

Flink会因为数据堆积和处理速度变慢导致checkpoint超时,而checkpoint是Flink保证数据一致性的关键所在,最终会导致数据的不一致发生

3、定位反压节点

1、利用Flink Web UI定位

Flink 的 TaskManager 会每隔 50 ms 触发一次反压状态监测,共监测 100 次,并将计算结果反馈给 JobManager,最后由 JobManager 进行计算反压的比例,然后进行展示。

这个比例展示逻辑如下:

OK: 0 <= Ratio <= 0.10,表示状态良好正;

LOW: 0.10 < Ratio <= 0.5,表示有待观察;

HIGH: 0.5 < Ratio <= 1,表示要处理了(增加并行度/subTask/检查是否有数据倾斜/增加内存)。

0.01,代表100次中有一次阻塞在内部调用。

2、利用Metric定位

4、反压原因及定位

数据倾斜:可以在 Flink 的后台管理页面看到每个 Task 处理数据的大小。当数据倾斜出现时,通常是简单地使用类似 KeyBy 等分组聚合函数导致的,需要用户将热点 Key 进行预处理,降低或者消除热点 Key 的影

代码本身:开发者错误地使用 Flink 算子,没有深入了解算子的实现机制导致性能问题。我们可以通过查看运行机器节点的 CPU 和内存情况定位问题

GC:不合理的设置 TaskManager 的垃圾回收参数会导致严重的 GC 问题,我们可以通过 -XX:+PrintGCDetails 参数查看 GC 的日志。


喵呜面试助手: 一站式解决面试问题,你可以搜索微信小程序 [喵呜面试助手] 或关注 [喵呜刷题] -> 面试助手 免费刷题。如有好的面试知识或技巧期待您的共享!

创作类型:
原创

本文链接:Flink 任务出现很高的延迟,你会如何入手解决类似问题?

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。
分享文章
share