问题:
flinkcdc+flinksql做实时读取sls日志和实时统计业务指标,今天发现程序背压了,业务延迟了6个小时。
解决办法:
1、资源优化
作业并发大时:在作业的高级配置的资源配置中,增加JobManager的资源,提高CPU和内存的大小,例如:Job Manager cpu设置为4。Job Manager Memory设置为8 GiB。
作业拓扑较复杂时,在作业的高级配置的资源配置中,增加TaskManager的资源,提高CPU和内存的大小,例如:Task Manager CPUs设置为4。Task Manager Memory设置为8 GiB。
2、sql优化
开启MiniBatch(提升吞吐):
table.exec.mini-batch.enabled: true
table.exec.mini-batch.allow-latency: 5s
MiniBatch是缓存一定的数据后再触发处理,以减少对State的访问,从而提升吞吐并减少数据的输出量。MiniBatch主要基于事件消息来触发微批处理,事件消息会按您指定的时间间隔在源头插入。
复盘
下面是实时延迟时的截图:
下面是实时追上数据时的截图:
bingo:我开启了MiniBatch配置,以5秒微批的方式做实时处理,程序性能直接飞速提升,6小时的延迟十几分钟就追上了。性能杠杠的!