Flink 死了;直接缓冲内存中内存不足

Flink dies; OutOfMemory in Directr Buffer Memory

在部署 Flink 时,我收到以下 OOM 错误消息:

org.apache.flink.runtime.io.network.netty.exception.LocalTransportException: java.lang.OutOfMemoryError: Direct buffer memory at org.apache.flink.runtime.io.network.netty.PartitionRequestClientHandler.exceptionCaught(PartitionRequestClientHandler.java:153) at io.netty.channel.AbstractChannelHandlerContext.invokeExceptionCaught(AbstractChannelHandlerContext.java:246) at io.netty.channel.AbstractChannelHandlerContext.fireExceptionCaught(AbstractChannelHandlerContext.java:224) at io.netty.channel.ChannelInboundHandlerAdapter.exceptionCaught(ChannelInboundHandlerAdapter.java:131)

Caused by: io.netty.handler.codec.DecoderException: java.lang.OutOfMemoryError: Direct buffer memory at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:234) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308) ... 9 more

Caused by: java.lang.OutOfMemoryError: Direct buffer memory at java.nio.Bits.reserveMemory(Bits.java:658) at java.nio.DirectByteBuffer.(DirectByteBuffer.java:123) at java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:311)

我在flink-conf文件里设置了'taskmanager.network.numberOfBuffers: 120000',但是没用

TaskManger 数量:50,每个 TaskManager 的内存:16GB,每个 TaskManager 的核心数:16,每个 TasmNager 的槽数:8

对于我运行的作业,我使用的并行度为25,原始数据文件大约300GB,并且有很多连接操作,我想这需要大量的网络通信。

如果您对这里发生的事情有任何想法,请告诉我

您使用的是哪个版本的 Flink? Flink 0.10.0 和 0.10.1 升级后的 Netty 版本存在问题。此问题已在三周前大约 3 次修复,但尚未发布。

固定在master branch (published as 1.0-SNAPSHOT) or the 0.10分支。