You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-zh@flink.apache.org by "renshangtao@deepexi.com" <re...@deepexi.com> on 2022/03/10 16:40:07 UTC

求助:Flink Session模式下,多次重跑同一个批处理任务会导致系统内存被耗尽

各位大佬好:
是这样的,我在跑一个批处理任务的过程中发现,在Flink Session模式下,多次重跑同一个批处理任务会导致系统内存被耗尽,最终导致系统oom之后将taskmanager进程杀掉。

按道理说一个job跑完,它所占用的资源都应该释放掉吧,以便后续的job继续执行。但是测试结果显示并没有

1、环境:
5节点的flink 1.14.3 standalone集群,宿主机是64G内存,每个节点分配33G内存,22个slot
5节点的Hadoop 3.3.1 集群,Hive 3.1.2,iceberg 0.13.1
数据以iceberg表的形式存储在HDFS上
2、批处理任务:
将表A的5千万条数据,对其主键进行Hash之后,插入另一个表B中。SQL语句如下:
insert into flinal_temp
select step_id,
param_id,
wafer_id,
chip_id,
product_id,
hive_partition_content,
cast (wafer_start_date as date),
(HASH_CODE(step_id || param_id || chip_id || wafer_id)) % 100 as part_id from test_5qw;
3、出现问题:
多次跑同一个任务(非并行),就可以通过top命令观察到系统可用内存越来越少,到一定程度之后会触发oom杀掉taskmanager进程
4、DAG图
4、Flink配置


5、集群节点
6、其中两台的内存使用情况

目前是无作业运行状态,两台内存占有率均达到了90%,Flink任务刚启动时,内存占有率仅为15%左右

手动触发GC也没有效果,内存并不会下降
7、触发oom杀进程之后
内存恢复正常
因为OOM系统杀掉74904 Taskmanager进程

可以看到因为内存OOM导致TM被杀掉,一台主机64G内存,分给TM 33G,按道理说不应该超过分配的内存才对

请大佬们帮忙看一下吧,感谢!!!



















renshangtao@deepexi.com

Re: 求助:Flink Session模式下,多次重跑同一个批处理任务会导致系统内存被耗尽

Posted by Caizhi Weng <ts...@gmail.com>.
Hi!

图片不能显示,建议上传到外部图床,或通过文字的方式贴上配置。

“多次跑同一个任务”大概是几次?用的是什么 Flink 版本?如果有可能的话能否贴一下用户代码?OOM 是 metaspace 的 OOM
吗?还是其他的?

liuyanwei75 提到的 meta space OOM 问题目前确实是存在的,而且目前没有很好的解决方案。

邮箱 <li...@126.com> 于2022年3月12日周六 02:07写道:

> 我之前也有这个现象,就是不停的启停同一个job,Flink的meta space
> 内存会不断增加,我用arts监控内存发现通过Flink的类加载器child load策略加载的类并没有释放
>
> 发自我的iPhone
>
> > 在 2022年3月11日,21:10,yu'an huang <h....@gmail.com> 写道:
> >
> > 你好,建议将Task Manager内存dump下来使用一些内存分析工具比如visual vm,分析下是否存在内存泄露
> >
> >> On Fri, 11 Mar 2022 at 9:28 AM, renshangtao@deepexi.com <
> >> renshangtao@deepexi.com> wrote:
> >>
> >> 各位大佬好:
> >> 是这样的,我在跑一个批处理任务的过程中发现,在Flink
> >> Session模式下,多次重跑同一个批处理任务会导致系统内存被耗尽,最终导致系统oom之后将taskmanager进程杀掉。
> >>
> >> 按道理说一个job跑完,它所占用的资源都应该释放掉吧,以便后续的job继续执行。但是测试结果显示并没有
> >>
> >> 1、环境:
> >> 5节点的flink 1.14.3 standalone集群,宿主机是64G内存,每个节点分配33G内存,22个slot
> >> 5节点的Hadoop 3.3.1 集群,Hive 3.1.2,iceberg 0.13.1
> >> 数据以iceberg表的形式存储在HDFS上
> >> 2、批处理任务:
> >> 将表A的5千万条数据,对其主键进行Hash之后,插入另一个表B中。SQL语句如下:
> >> insert into flinal_temp
> >> select step_id,
> >> param_id,
> >> wafer_id,
> >> chip_id,
> >> product_id,
> >> hive_partition_content,
> >> cast (wafer_start_date as date),
> >> (HASH_CODE(step_id || param_id || chip_id || wafer_id)) % 100 as part_id
> >> from test_5qw;
> >> 3、出现问题:
> >> 多次跑同一个任务(非并行),就可以通过top命令观察到系统可用内存越来越少,到一定程度之后会触发oom杀掉taskmanager进程
> >> 4、DAG图
> >> 4、Flink配置
> >>
> >>
> >> 5、集群节点
> >> 6、其中两台的内存使用情况
> >>
> >> 目前是无作业运行状态,两台内存占有率均达到了90%,Flink任务刚启动时,内存占有率仅为15%左右
> >>
> >> 手动触发GC也没有效果,内存并不会下降
> >> 7、触发oom杀进程之后
> >> 内存恢复正常
> >> 因为OOM系统杀掉74904 Taskmanager进程
> >>
> >> 可以看到因为内存OOM导致TM被杀掉,一台主机64G内存,分给TM 33G,按道理说不应该超过分配的内存才对
> >>
> >> 请大佬们帮忙看一下吧,感谢!!!
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >> renshangtao@deepexi.com
> >>
>

Re: 求助:Flink Session模式下,多次重跑同一个批处理任务会导致系统内存被耗尽

Posted by 邮箱 <li...@126.com>.
我之前也有这个现象,就是不停的启停同一个job,Flink的meta space 内存会不断增加,我用arts监控内存发现通过Flink的类加载器child load策略加载的类并没有释放

发自我的iPhone

> 在 2022年3月11日,21:10,yu'an huang <h....@gmail.com> 写道:
> 
> 你好,建议将Task Manager内存dump下来使用一些内存分析工具比如visual vm,分析下是否存在内存泄露
> 
>> On Fri, 11 Mar 2022 at 9:28 AM, renshangtao@deepexi.com <
>> renshangtao@deepexi.com> wrote:
>> 
>> 各位大佬好:
>> 是这样的,我在跑一个批处理任务的过程中发现,在Flink
>> Session模式下,多次重跑同一个批处理任务会导致系统内存被耗尽,最终导致系统oom之后将taskmanager进程杀掉。
>> 
>> 按道理说一个job跑完,它所占用的资源都应该释放掉吧,以便后续的job继续执行。但是测试结果显示并没有
>> 
>> 1、环境:
>> 5节点的flink 1.14.3 standalone集群,宿主机是64G内存,每个节点分配33G内存,22个slot
>> 5节点的Hadoop 3.3.1 集群,Hive 3.1.2,iceberg 0.13.1
>> 数据以iceberg表的形式存储在HDFS上
>> 2、批处理任务:
>> 将表A的5千万条数据,对其主键进行Hash之后,插入另一个表B中。SQL语句如下:
>> insert into flinal_temp
>> select step_id,
>> param_id,
>> wafer_id,
>> chip_id,
>> product_id,
>> hive_partition_content,
>> cast (wafer_start_date as date),
>> (HASH_CODE(step_id || param_id || chip_id || wafer_id)) % 100 as part_id
>> from test_5qw;
>> 3、出现问题:
>> 多次跑同一个任务(非并行),就可以通过top命令观察到系统可用内存越来越少,到一定程度之后会触发oom杀掉taskmanager进程
>> 4、DAG图
>> 4、Flink配置
>> 
>> 
>> 5、集群节点
>> 6、其中两台的内存使用情况
>> 
>> 目前是无作业运行状态,两台内存占有率均达到了90%,Flink任务刚启动时,内存占有率仅为15%左右
>> 
>> 手动触发GC也没有效果,内存并不会下降
>> 7、触发oom杀进程之后
>> 内存恢复正常
>> 因为OOM系统杀掉74904 Taskmanager进程
>> 
>> 可以看到因为内存OOM导致TM被杀掉,一台主机64G内存,分给TM 33G,按道理说不应该超过分配的内存才对
>> 
>> 请大佬们帮忙看一下吧,感谢!!!
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> renshangtao@deepexi.com
>> 

Re: 求助:Flink Session模式下,多次重跑同一个批处理任务会导致系统内存被耗尽

Posted by yu'an huang <h....@gmail.com>.
你好,建议将Task Manager内存dump下来使用一些内存分析工具比如visual vm,分析下是否存在内存泄露

On Fri, 11 Mar 2022 at 9:28 AM, renshangtao@deepexi.com <
renshangtao@deepexi.com> wrote:

> 各位大佬好:
> 是这样的,我在跑一个批处理任务的过程中发现,在Flink
> Session模式下,多次重跑同一个批处理任务会导致系统内存被耗尽,最终导致系统oom之后将taskmanager进程杀掉。
>
> 按道理说一个job跑完,它所占用的资源都应该释放掉吧,以便后续的job继续执行。但是测试结果显示并没有
>
> 1、环境:
> 5节点的flink 1.14.3 standalone集群,宿主机是64G内存,每个节点分配33G内存,22个slot
> 5节点的Hadoop 3.3.1 集群,Hive 3.1.2,iceberg 0.13.1
> 数据以iceberg表的形式存储在HDFS上
> 2、批处理任务:
> 将表A的5千万条数据,对其主键进行Hash之后,插入另一个表B中。SQL语句如下:
> insert into flinal_temp
> select step_id,
> param_id,
> wafer_id,
> chip_id,
> product_id,
> hive_partition_content,
> cast (wafer_start_date as date),
> (HASH_CODE(step_id || param_id || chip_id || wafer_id)) % 100 as part_id
> from test_5qw;
> 3、出现问题:
> 多次跑同一个任务(非并行),就可以通过top命令观察到系统可用内存越来越少,到一定程度之后会触发oom杀掉taskmanager进程
> 4、DAG图
> 4、Flink配置
>
>
> 5、集群节点
> 6、其中两台的内存使用情况
>
> 目前是无作业运行状态,两台内存占有率均达到了90%,Flink任务刚启动时,内存占有率仅为15%左右
>
> 手动触发GC也没有效果,内存并不会下降
> 7、触发oom杀进程之后
> 内存恢复正常
> 因为OOM系统杀掉74904 Taskmanager进程
>
> 可以看到因为内存OOM导致TM被杀掉,一台主机64G内存,分给TM 33G,按道理说不应该超过分配的内存才对
>
> 请大佬们帮忙看一下吧,感谢!!!
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> renshangtao@deepexi.com
>