full GC 应该不是增大内存后才出现的,这一点可以确认一下 GC log。但是增大内存,可能会造成一次 full GC 花费的时间更长,从而导致 TM 心跳超时。 同样的,metaspace OOM 也可能是由于 GC 速度变慢造成的。JVM 有单独的线程负责 GC,通常是在 heap/direct/metaspace 这些区域用满之前达到某个阈值就开始 GC,如果 GC 速度慢于内存申请的速度,也有可能造成 OOM。 按照我们的经验,一个 TM 用 64G 也是比较大了,如果都是以 java heap 内存为主的话,那可能需要具体配一下 GC 策略。
Thank you~ Xintong Song On Wed, Apr 29, 2020 at 12:27 PM 了不起的盖茨比 <573693...@qq.com> wrote: > 除了 memory增加,其余配置还是使用默认的。就是不明白,为什么我内存增加了,反而会出现full > gc情况,之后taskmanager失去心跳,然后继续提交job,出现metaspace溢出这个情况。 > 在使用默认配置内存时候反而是没有出现fullgc。想明白其中缘由。 > > > > > > ------------------ 原始邮件 ------------------ > 发件人: "Xintong Song"<tonysong...@gmail.com>; > 发送时间: 2020年4月29日(星期三) 中午11:00 > 收件人: "user-zh"<user-zh@flink.apache.org>; > > 主题: Re: flink 内存设置问题-metaspace 溢出 > > > > Metaspace OOM 通常是 JVM 加载的类过多导致的。TM 内存从 1568m 增大到 65536m,是否有增加 slot > 的数量呢?这个有可能造成运行时加载的类变多,metaspace 大小不变的情况下也可能会触发 OOM。 > 目前社区已经收到许多反馈,关于 1.10.0 的默认 metaspace 大小可能不太合理,在 1.10.1 中会调大这个默认值。你这边也可以先把 > taskmanager.memory.metaspace.size 调到 256m 试一试。 > > Thank you~ > > Xintong Song > > > > On Tue, Apr 28, 2020 at 7:21 PM 出发 <573693...@qq.com> wrote: > > > 物理机内存:124G当进行如下设置时候 > > taskmanager.memory.process.size: 65536m > > > > es5-connector sink数据 > > 此时会出现频繁fullgc java.lang.OutOfMemoryError: Metaspace > > > > > > > > 当我设置 > > taskmanager.memory.process.size: 1568m > > es5-connector sink数据 > > 不会出现溢出问题 > > > > > > > 这个问题非常的困扰,实在不明白,我设置大内存之后,并没有影响到metaspace,而且当用系统默认内存时候竟然不出错,百思不得其解。望能够帮助理解下 > > 上述操作重复试验很多次都是一样结果