Flink性能优化篇
2023-06-13 17:10:47 0 举报
AI智能生成
实战篇
作者其他创作
大纲/内容
1、背压优化
1、开启火焰图,查看性能瓶颈点:rest.flamegraph.enabled : true
2、Flink SQL优化
2.1、开启MiniBatch
2.2、开启 LocalGlobal
2.3、开启Split Distinct
3、状态优化
3.1、状态读写比较频繁的场景,在状态前增加jvm级别缓存【guava】,降低状态的读操作
3.2、大状态参数优化,大状态下,经常出现container kill的异常,报内存超出,此时一般加上rocksdb内存控制参数:
state.backend.rocksdb.memory.fixed-per-slot=156MB,单个分配slot内存:参数值=3/2.5:1,可有效控制该问题
如果状态访问性能差,可适当增加管理内存的大小:taskmanager.memory.managed.fraction=0.5/0.6
state.backend.rocksdb.memory.fixed-per-slot=156MB,单个分配slot内存:参数值=3/2.5:1,可有效控制该问题
如果状态访问性能差,可适当增加管理内存的大小:taskmanager.memory.managed.fraction=0.5/0.6
3.3、一个作业中,不建议声明超过3个状态,因为每个state共享一个blockcache,通过都有各自的index和布隆过滤器以及sstable,声明过多会导致状态访问磁盘的概率变大,从而降低性能
3.4、设计状态时,需要根据业务场景评估状态读写的频率
a、看是否有机会减少状态的访问
b、如果必须要访问状态,是否有机会将状态进行拆分,使用小状态满足大部分请求需求
a、看是否有机会减少状态的访问
b、如果必须要访问状态,是否有机会将状态进行拆分,使用小状态满足大部分请求需求
3.5、开启增量ck:state.backend.incremental:true
4、资源配置优化
4.1、设置算子最大并行度,避免后续并行度不能扩展
4.2、算子并行度最好是最大并行度的,需要考虑每个算子拿到数据的分数,让数据更加均匀。
例如最大并行度为512时,算子并行度可设置为171,不能设置为170
例如最大并行度为512时,算子并行度可设置为171,不能设置为170
4.3、jm一般设置4G,tm对应的cu和slot的关系进行压测调试。由于tm内存中有很多内存是slot共享
分别有: network、JVM Metaspace、JVM Overhead、Framework Off-Heap 、Framework Heap内存
所以在设置tm资源时,可以考虑单个tm设置为1拖4/6,slot:cu=1/1.5:1,这样可以最大粒度增加java堆内存的大小
分别有: network、JVM Metaspace、JVM Overhead、Framework Off-Heap 、Framework Heap内存
所以在设置tm资源时,可以考虑单个tm设置为1拖4/6,slot:cu=1/1.5:1,这样可以最大粒度增加java堆内存的大小
5、架构优化
5.1、在时效性允许的情况下,增加窗口+reduce对数据进行去重,降低数据下发量,降低数据库的压力
5.2、维表一般使用java定时加载的方式,针对实时性要求很高的场景,可缩短调度周期和透传查数据库的方式满足
5.3、聚合维度出现数据倾斜时,可以考虑:window+reduce+groupby操作实现局部聚合,降低状态的访问量和减少数据量级
5.4、代码抽象,包括环境声明、维表加载、状态读写、source和sink封装、核心处理逻辑的工厂类,从而降低代码的耦合
5.5、查询es数据量过大时,不要使用游标的方式,而是采用searchAfter的方式,可大大降低es集群内存压力
游标方式是查询时刻的数据做一个快照在内存中
游标方式是查询时刻的数据做一个快照在内存中
5.6、数据逻辑处理和数据下发时,需要考虑数据乱序问题
5.7、所有算子都需要设置uid和name
6、内存参数优化
6.1、如果出现network buffer不足或者通过ui界面发现该内存使用率很低时,
可调整参数:taskmanager.memory.network.max
可调整参数:taskmanager.memory.network.max
6.2、如果tm的full jc很严重时,则说明内存不足,需要不断的gc,则需要增加java内存,增加内存的方式有:
增加tm总内存;降低其他内存使用
增加tm总内存;降低其他内存使用
6.3、如果当前任务基本上无状态或状态很小,百M以下,可降低管理内存的大小。
taskmanager.memory.managed.fraction=0.2/0.1
taskmanager.memory.managed.fraction=0.2/0.1
6.4 Direct Buffer Memory异常,则需要
收藏
收藏
0 条评论
下一页