Hi 大家好,
我用github上Blink分支(1.5)编译的flink来运行一些实时任务,发现Taskmanager 因为内存超了container限制被yarn kill. 有没有人有比较好的问题定位方案? 尝试过但是还没有解决问题的方法: 1. 尝试增加taskmanager内存 修改: 从8G 提高到 36G, state back 从fileSystem 改为RocksDB. 现象:taskmanager运行时间增加了好几个小时,但是还是因为内存超了被yarn kill. 2. dump taskmanager 堆栈,查看什么对象占用大量内存 操作: jmap -dump .... 现象: 还没有dump结束,taskmanager就因为没有heartbeat 被主动kill. (尝试过修改heartbeat时间,还是无果) 3. 借用官网debug方式,如下,但是没有dump出文件. 4. 设置containerized.heap-cutoff-ratio,希望触发 oom 从而产生dump文件,但是这个参数似乎不起作用. |
Hi
比较好奇你为什么在 Blink 分支做测试,而不是用最新的 1.11 做测试呢? Best, Congxian 柯四海 <[hidden email]> 于2020年8月24日周一 下午5:58写道: > Hi 大家好, > 我用github上Blink分支(1.5)编译的flink来运行一些实时任务,发现Taskmanager > 因为内存超了container限制被yarn kill. > 有没有人有比较好的问题定位方案? > > 尝试过但是还没有解决问题的方法: > 1. 尝试增加taskmanager内存 > 修改: 从8G 提高到 36G, state back 从fileSystem 改为RocksDB. > 现象:taskmanager运行时间增加了好几个小时,但是还是因为内存超了被yarn kill. > 2. dump taskmanager 堆栈,查看什么对象占用大量内存 > 操作: jmap -dump .... > 现象: 还没有dump结束,taskmanager就因为没有heartbeat 被主动kill. > (尝试过修改heartbeat时间,还是无果) > 3. 借用官网debug方式,如下,但是没有dump出文件. > 4. 设置containerized.heap-cutoff-ratio,希望触发 oom 从而产生dump文件,但是这个参数似乎不起作用. > |
我不是在做测试,公司flink是别人用的blink 分支编译的,我最近也有切换到 flink 1.11 来运行的打算, 我用flink 1.11 来试试.
------------------ 原始邮件 ------------------ 发件人: "user-zh" <[hidden email]>; 发送时间: 2020年8月24日(星期一) 晚上8:22 收件人: "user-zh"<[hidden email]>; 主题: Re: flink taskmanager 因为内存超了container限制 被yarn kill 问题定位 Hi 比较好奇你为什么在 Blink 分支做测试,而不是用最新的 1.11 做测试呢? Best, Congxian 柯四海 <[hidden email]> 于2020年8月24日周一 下午5:58写道: > Hi 大家好, > 我用github上Blink分支(1.5)编译的flink来运行一些实时任务,发现Taskmanager > 因为内存超了container限制被yarn kill. > 有没有人有比较好的问题定位方案? > > 尝试过但是还没有解决问题的方法: > 1. 尝试增加taskmanager内存 > 修改: 从8G 提高到 36G, state back 从fileSystem 改为RocksDB. > 现象:taskmanager运行时间增加了好几个小时,但是还是因为内存超了被yarn kill. > 2. dump taskmanager 堆栈,查看什么对象占用大量内存 > 操作: jmap -dump .... > 现象: 还没有dump结束,taskmanager就因为没有heartbeat 被主动kill. > (尝试过修改heartbeat时间,还是无果) > 3. 借用官网debug方式,如下,但是没有dump出文件. > 4. 设置containerized.heap-cutoff-ratio,希望触发 oom 从而产生dump文件,但是这个参数似乎不起作用. > |
首先,TaskManager 因为内存超用被杀,只能是 native 内存造成的。因为 flink 指定了 jvm 的 xmx 参数,heap
内存是不可能出现超用的,如果内存不足只会出现 OOM。所以你去排查 heap dump 这个方向是有问题的。 解决思路应该是调大 containerized.heap-cutoff-ratio,这个参数的含义是在 yarn container 中留出一定比例的 native 内存,让 jvm 只去使用剩余部分的内存。这些 native 主要用于:java native 方法调用、jvm 自身开销(类元数据、线程栈等)、rocksdb。flink 是无法控制这部分内存的用量的,只能是通过预留足够多的内存的方式,防止 container 超用。 Thank you~ Xintong Song On Mon, Aug 24, 2020 at 8:56 PM 柯四海 <[hidden email]> wrote: > 我不是在做测试,公司flink是别人用的blink 分支编译的,我最近也有切换到 flink 1.11 来运行的打算, 我用flink 1.11 > 来试试. > > > > > ------------------ 原始邮件 ------------------ > 发件人: > "user-zh" > < > [hidden email]>; > 发送时间: 2020年8月24日(星期一) 晚上8:22 > 收件人: "user-zh"<[hidden email]>; > > 主题: Re: flink taskmanager 因为内存超了container限制 被yarn kill 问题定位 > > > > Hi > 比较好奇你为什么在 Blink 分支做测试,而不是用最新的 1.11 做测试呢? > Best, > Congxian > > > 柯四海 <[hidden email]> 于2020年8月24日周一 下午5:58写道: > > > Hi 大家好, > > 我用github上Blink分支(1.5)编译的flink来运行一些实时任务,发现Taskmanager > > 因为内存超了container限制被yarn kill. > > 有没有人有比较好的问题定位方案? > > > > 尝试过但是还没有解决问题的方法: > > 1. 尝试增加taskmanager内存 > > 修改: 从8G 提高到 36G, > state back 从fileSystem 改为RocksDB. > > > 现象:taskmanager运行时间增加了好几个小时,但是还是因为内存超了被yarn kill. > > 2. dump taskmanager 堆栈,查看什么对象占用大量内存 > > 操作: jmap -dump .... > > 现象: > 还没有dump结束,taskmanager就因为没有heartbeat 被主动kill. > > (尝试过修改heartbeat时间,还是无果) > > 3. 借用官网debug方式,如下,但是没有dump出文件. > > 4. 设置containerized.heap-cutoff-ratio,希望触发 oom > 从而产生dump文件,但是这个参数似乎不起作用. > > |
Free forum by Nabble | Edit this page |