Flink精选学习

【Flink 精选】常见的性能问题及其定位思路

2020-09-10  本文已影响0人  熊本极客

常见的性能问题及其定位思路


1.常见的性能问题

(1)JSON序列化和反序列化

source的序列化,sink的反序列化

(2)MAP和SET的hash冲突

MAP和SET的负载因子随着数据的增大而变大,使得hash冲突的几率大大增加,导致了插入和查询效率严重下降。

(3)数据倾斜

数据分布原理符合“二八原理”,即一般情况下数据的分布是不均匀的。如果数据分布严重不均匀,则出现数据倾斜,导致大量的数据集中在某个Subtask。数据倾斜不但导致 job 的性能和吞吐量下降,而且可能使得JVM 的内存资源短缺导致频繁 GC,严重的情况可以导致TaskManager的失联。

(4)外部低速系统交互

sink 对接的外部低速系统,例如 Mysql、Hbase 等,不支持高写入量。如果 sink 的数据量剧增,严重的可能导致外部低速系统的崩溃。

(5)频繁GC

JVM 内存不足或者分配不合理,频繁 GC,甚至 TaskManager 的失联。

(6)大窗口

滚动窗口大小过大、滑动窗口的大小和滑动距离过小、数据量大,可能导致缓存数据量太大,使得 JVM 内存不足甚至 GC,还可能导致 checkpoint 时间变大甚至超时。

常见性能问题

2.问题的定位思路

定位口诀:一压二查三指标,延迟吞吐是核心。时刻关注资源量 ,  排查首先看GC。

(1)看反压

通常最后一个反压的 Subtask,其下游就是反压的源头,即 job 的瓶颈。

(2)看checkpoint时长

checkpoint 时长影响 job 整体吞吐

(3)看核心指标

延迟、吞吐是最重要的指标。

(4)资源的使用率

提高资源利用率是最终目的。

定位思路

                   

上一篇下一篇

猜你喜欢

热点阅读