常见的性能问题及其定位思路
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)资源的使用率
提高资源利用率是最终目的。
定位思路
网友评论