Container is running beyond physical memory limits

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Container is running beyond physical memory limits

lian
各位大佬好:
    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内存可以先解决这个问题,但是我目前还没有解决掉。以及提到用户的使用不当,也会导致这个问题,不知我的场景,是否是不合理的。


  盼复~~~




 
Reply | Threaded
Open this post in threaded view
|

Re: Container is running beyond physical memory limits

Eleanore Jin
Hi
这是我之前看到一篇关于OOM KILL 的分析文章,不知道对你有没有用

http://www.whitewood.me/2021/01/02/%E8%AF%A6%E8%A7%A3-Flink-%E5%AE%B9%E5%99%A8%E5%8C%96%E7%8E%AF%E5%A2%83%E4%B8%8B%E7%9A%84-OOM-Killed/

On Thu, Feb 18, 2021 at 9:01 AM lian <[hidden email]> wrote:

> 各位大佬好:
>     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内存可以先解决这个问题,但是我目前还没有解决掉。以及提到用户的使用不当,也会导致这个问题,不知我的场景,是否是不合理的。
>
>
>   盼复~~~
>
>
>
>
>