各位大佬好:
1. 背景:使用Flink SQL实现回撤流的功能,使用了Last_Value,第二层聚合进行sum求和计算,主要是依靠回撤流的方式,来实现对已经下发的数据进行减法的操作。
实现的功能和菜鸟如下基本是一致的。
https://developer.aliyun.com/article/457392 2. 版本及调优:flink 1.10.1,资源单个slot从2-6g,借助了rocksdb的状态后端来存储状态值,对flink的managed memory进行了反复的调优,
调整过overhead内存,最小值设为1g,最大值设为2g
blockcache大小,由默认值8mb设置为128mb
block size大小,由默认值4kb设置为32kb
flush线程数,由默认值1设置为4
writebuffer,由默认值0.5调整为0.25
采用了batch size,两阶段聚合参数
增量checkpoint
预分配内存设置为false
3. 状态大小: ck在100mb - 25g浮动,savepoint达到了120g
4. 存在的问题:
1. 内存出现不足,container被kill掉
2. ck时,状态大的很大,小的很小,不知道这个是什么原因?
5. 看了很多关于内存oom被kill的文章,调整了overhead参数,增大tm的内存来扩大managed memory,调整rocksdb的参数等一系列的参数,目前都还是运行一段时间后出现container 被kill。
6. 个人预留的问题:flink 的rocksdb的mertic的参数有添加,但是个人不是很清楚,如何进行打印和监控,如果后续的flink 的ui界面能够加上对这一块的页面展示,那就会比较好了。
所以,对于到底是哪块内存超了,目前也还不是很清楚。
看看,有没有大佬能帮忙看一下,这个问题如何优化会比较好?
看了2020 flink峰会,唐云大佬对于rocksdb做的相关工作的分享,提到先提高overhead内存可以先解决这个问题,但是我目前还没有解决掉。以及提到用户的使用不当,也会导致这个问题,不知我的场景,是否是不合理的。
盼复~~~