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 yidan zhao <hi...@gmail.com> on 2023/05/26 09:39:10 UTC

咨询flink1.17+jdk11环境下使用G1 GC发生大量full gc的问题

最近升级flink版本和jdk版本,flink从1.15.2升级到1.17.0,jdk从8升级到11。然后出现大量full gc。
分析后,发现主要是 System.gc() 导致。 进一步定位到是 redisson 库中 netty 部分用到了 DirectMemory
导致。 直接内存不足,导致频繁调用 System.gc 触发 full gc。
我现在问题是,通过测试对比实验发现,jdk8+flink1.17没问题,jdk11+flink1.17就会有该问题。
有人知道原因嘛?

其他信息:
jdk8和jdk11情况下都是G1GC,且vm参数一致,直接内存max限制也一致。但是通过jinfo等查看,确实jdk8场景下的directMemory使用较少。

Re: 咨询flink1.17+jdk11环境下使用G1 GC发生大量full gc的问题

Posted by yidan zhao <hi...@gmail.com>.
这个问题比较奇怪,我尝试加大了task.offheap的内存,主要是为了加大 direct memory 的限制,部分作业加大后ok了。
今天又发现一个作业,direct mem 达到9G了还不行(5G
task.offheap额外配置,另外4G是network部分配置的,所以jvm参数部分对direct mem的限制是9G)。

Yuxin Tan <ta...@gmail.com> 于2023年5月26日周五 18:15写道:
>
> hi, yidan
>
> 除 jvm 参数外,flink 其他配置完全一样吗?比如 state backend 是否有变化?
>
> 另外, jdk11 是不是用的最新版本,不是的话,觉得也可以尝试一下最新版本。
>
> 如果 jdk11 用的最新版本,可以尝试下使用其他 GC 算法是否也有同样问题。比如 -XX:+UseParallelGC
> -XX:NewRatio=3 -XX:ParallelGCThreads=4 -XX:CICompilerCount=4
> -XX:-CompactStrings
>
> Best,
> Yuxin
>
>
> yidan zhao <hi...@gmail.com> 于2023年5月26日周五 17:39写道:
>
> > 最近升级flink版本和jdk版本,flink从1.15.2升级到1.17.0,jdk从8升级到11。然后出现大量full gc。
> > 分析后,发现主要是 System.gc() 导致。 进一步定位到是 redisson 库中 netty 部分用到了 DirectMemory
> > 导致。 直接内存不足,导致频繁调用 System.gc 触发 full gc。
> > 我现在问题是,通过测试对比实验发现,jdk8+flink1.17没问题,jdk11+flink1.17就会有该问题。
> > 有人知道原因嘛?
> >
> > 其他信息:
> >
> > jdk8和jdk11情况下都是G1GC,且vm参数一致,直接内存max限制也一致。但是通过jinfo等查看,确实jdk8场景下的directMemory使用较少。
> >

Re: 咨询flink1.17+jdk11环境下使用G1 GC发生大量full gc的问题

Posted by Yuxin Tan <ta...@gmail.com>.
hi, yidan

除 jvm 参数外,flink 其他配置完全一样吗?比如 state backend 是否有变化?

另外, jdk11 是不是用的最新版本,不是的话,觉得也可以尝试一下最新版本。

如果 jdk11 用的最新版本,可以尝试下使用其他 GC 算法是否也有同样问题。比如 -XX:+UseParallelGC
-XX:NewRatio=3 -XX:ParallelGCThreads=4 -XX:CICompilerCount=4
-XX:-CompactStrings

Best,
Yuxin


yidan zhao <hi...@gmail.com> 于2023年5月26日周五 17:39写道:

> 最近升级flink版本和jdk版本,flink从1.15.2升级到1.17.0,jdk从8升级到11。然后出现大量full gc。
> 分析后,发现主要是 System.gc() 导致。 进一步定位到是 redisson 库中 netty 部分用到了 DirectMemory
> 导致。 直接内存不足,导致频繁调用 System.gc 触发 full gc。
> 我现在问题是,通过测试对比实验发现,jdk8+flink1.17没问题,jdk11+flink1.17就会有该问题。
> 有人知道原因嘛?
>
> 其他信息:
>
> jdk8和jdk11情况下都是G1GC,且vm参数一致,直接内存max限制也一致。但是通过jinfo等查看,确实jdk8场景下的directMemory使用较少。
>