报错信息如下
Caused by: java.lang.OutOfMemoryError: Direct buffer memory at java.nio.Bits.reserveMemory(Bits.java:693) at java.nio.DirectByteBuffer.(DirectByteBuffer.java:123) at java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:311) at sun.nio.ch.Util.getTemporaryDirectBuffer(Util.java:241) at sun.nio.ch.IOUtil.read(IOUtil.java:195) at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:380) at org.apache.kafka.common.network.PlaintextTransportLayer.read(PlaintextTransportLayer.java:110) at org.apache.kafka.common.network.NetworkReceive.readFromReadableChannel(NetworkReceive.java:97) at org.apache.kafka.common.network.NetworkReceive.readFrom(NetworkReceive.java:71) at org.apache.kafka.common.network.KafkaChannel.receive(KafkaChannel.java:169) at org.apache.kafka.common.network.KafkaChannel.read(KafkaChannel.java:150) at org.apache.kafka.common.network.Selector.pollSelectionKeys(Selector.java:355) at org.apache.kafka.common.network.Selector.poll(Selector.java:303) at org.apache.kafka.clients.NetworkClient.poll(NetworkClient.java:349) at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:226) at org.apache.kafka.clients.consumer.KafkaConsumer.pollOnce(KafkaConsumer.java:1047) at org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:995) 版本 Flink:1.9.1 kafka-client:0.10.0.1 环境 on yarn JVM参数 -Xms14336m -Xmx14336m -XX:MaxDirectMemorySize=6144m flink-conf.yml 使用的是默认的参数 Stream任务,并且没有使用RocksDB 目前初步怀疑是Flink 的堆外内存占用过大导致kafka consumer 无法申请堆外内存导致OOM。但根据官方文档的配置 taskmanager.memory.fraction=0.7 这个应该在我的程序中不生效 taskmanager.network.memory.fraction=0.1 这样的配置下来应该用户代码可使用的堆外内存为6144m*0.9=5529m 我的问题是 在我当前的环境下是否还有我没注意到的Flink堆外内存配置,或者Flink需要占用的堆外内存是我所不了解的。 除了控制kafka comsumer 的流量以外有没有什么其他的调整方式? Best Aven |
可以使用这两个参数。
- containerized.heap-cutoff-ratio - containerized.heap-cutoff-min cutoff 的含义是从 container 内存中额外留出一部分,不作为 flink 的 heap/network/managed 内存。这部分内存通常是用于 JVM、用户代码、第三方依赖的对外内存开销。Flink 计算 MaxDirectMemorySize 参数时也会把 cutoff 算进去,因此调大 cutoff 也可以起到放宽直接内存上限的效果。 另外,Flink 1.9 及以前的内存模型是比较混乱的,建议有条件的话尽快升级到新版本。 Thank you~ Xintong Song On Wed, Dec 16, 2020 at 7:07 PM 巫旭阳 <[hidden email]> wrote: > 报错信息如下 > Caused by: java.lang.OutOfMemoryError: Direct buffer memory at > java.nio.Bits.reserveMemory(Bits.java:693) > > at java.nio.DirectByteBuffer.(DirectByteBuffer.java:123) at > java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:311) > > at sun.nio.ch.Util.getTemporaryDirectBuffer(Util.java:241) > > at sun.nio.ch.IOUtil.read(IOUtil.java:195) > > at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:380) > > at > org.apache.kafka.common.network.PlaintextTransportLayer.read(PlaintextTransportLayer.java:110) > > at > org.apache.kafka.common.network.NetworkReceive.readFromReadableChannel(NetworkReceive.java:97) > > at > org.apache.kafka.common.network.NetworkReceive.readFrom(NetworkReceive.java:71) > > at > org.apache.kafka.common.network.KafkaChannel.receive(KafkaChannel.java:169) > > at > org.apache.kafka.common.network.KafkaChannel.read(KafkaChannel.java:150) > > at > org.apache.kafka.common.network.Selector.pollSelectionKeys(Selector.java:355) > > > at org.apache.kafka.common.network.Selector.poll(Selector.java:303) > > at org.apache.kafka.clients.NetworkClient.poll(NetworkClient.java:349) > > at > org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:226) > > > at > org.apache.kafka.clients.consumer.KafkaConsumer.pollOnce(KafkaConsumer.java:1047) > > > at > org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:995) > > > > 版本 > Flink:1.9.1 > kafka-client:0.10.0.1 > 环境 > on yarn > JVM参数 > -Xms14336m > -Xmx14336m > -XX:MaxDirectMemorySize=6144m > flink-conf.yml > 使用的是默认的参数 > Stream任务,并且没有使用RocksDB > > 目前初步怀疑是Flink 的堆外内存占用过大导致kafka consumer 无法申请堆外内存导致OOM。但根据官方文档的配置 > taskmanager.memory.fraction=0.7 这个应该在我的程序中不生效 > taskmanager.network.memory.fraction=0.1 > > > 这样的配置下来应该用户代码可使用的堆外内存为6144m*0.9=5529m > 我的问题是 > 在我当前的环境下是否还有我没注意到的Flink堆外内存配置,或者Flink需要占用的堆外内存是我所不了解的。 > 除了控制kafka comsumer 的流量以外有没有什么其他的调整方式? > > > Best > Aven > > |
感谢回复,我尝试一下这两个参数。
我还有一个问题,flink的内存配置参数在启动,在运行时是否有办法查看。 或者在启动的时候是可以通过日志打印出来吗? -- Best! Aven 在 2020-12-16 19:22:19,"Xintong Song" <[hidden email]> 写道: >可以使用这两个参数。 > > - containerized.heap-cutoff-ratio > - containerized.heap-cutoff-min > >cutoff 的含义是从 container 内存中额外留出一部分,不作为 flink 的 heap/network/managed >内存。这部分内存通常是用于 JVM、用户代码、第三方依赖的对外内存开销。Flink 计算 MaxDirectMemorySize 参数时也会把 >cutoff 算进去,因此调大 cutoff 也可以起到放宽直接内存上限的效果。 > > >另外,Flink 1.9 及以前的内存模型是比较混乱的,建议有条件的话尽快升级到新版本。 > > >Thank you~ > >Xintong Song > > > >On Wed, Dec 16, 2020 at 7:07 PM 巫旭阳 <[hidden email]> wrote: > >> 报错信息如下 >> Caused by: java.lang.OutOfMemoryError: Direct buffer memory at >> java.nio.Bits.reserveMemory(Bits.java:693) >> >> at java.nio.DirectByteBuffer.(DirectByteBuffer.java:123) at >> java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:311) >> >> at sun.nio.ch.Util.getTemporaryDirectBuffer(Util.java:241) >> >> at sun.nio.ch.IOUtil.read(IOUtil.java:195) >> >> at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:380) >> >> at >> org.apache.kafka.common.network.PlaintextTransportLayer.read(PlaintextTransportLayer.java:110) >> >> at >> org.apache.kafka.common.network.NetworkReceive.readFromReadableChannel(NetworkReceive.java:97) >> >> at >> org.apache.kafka.common.network.NetworkReceive.readFrom(NetworkReceive.java:71) >> >> at >> org.apache.kafka.common.network.KafkaChannel.receive(KafkaChannel.java:169) >> >> at >> org.apache.kafka.common.network.KafkaChannel.read(KafkaChannel.java:150) >> >> at >> org.apache.kafka.common.network.Selector.pollSelectionKeys(Selector.java:355) >> >> >> at org.apache.kafka.common.network.Selector.poll(Selector.java:303) >> >> at org.apache.kafka.clients.NetworkClient.poll(NetworkClient.java:349) >> >> at >> org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:226) >> >> >> at >> org.apache.kafka.clients.consumer.KafkaConsumer.pollOnce(KafkaConsumer.java:1047) >> >> >> at >> org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:995) >> >> >> >> 版本 >> Flink:1.9.1 >> kafka-client:0.10.0.1 >> 环境 >> on yarn >> JVM参数 >> -Xms14336m >> -Xmx14336m >> -XX:MaxDirectMemorySize=6144m >> flink-conf.yml >> 使用的是默认的参数 >> Stream任务,并且没有使用RocksDB >> >> 目前初步怀疑是Flink 的堆外内存占用过大导致kafka consumer 无法申请堆外内存导致OOM。但根据官方文档的配置 >> taskmanager.memory.fraction=0.7 这个应该在我的程序中不生效 >> taskmanager.network.memory.fraction=0.1 >> >> >> 这样的配置下来应该用户代码可使用的堆外内存为6144m*0.9=5529m >> 我的问题是 >> 在我当前的环境下是否还有我没注意到的Flink堆外内存配置,或者Flink需要占用的堆外内存是我所不了解的。 >> 除了控制kafka comsumer 的流量以外有没有什么其他的调整方式? >> >> >> Best >> Aven >> >> |
日志文件开头会打环境信息,包括 JVM 参数。
Thank you~ Xintong Song On Wed, Dec 16, 2020 at 10:01 PM aven <[hidden email]> wrote: > 感谢回复,我尝试一下这两个参数。 > 我还有一个问题,flink的内存配置参数在启动,在运行时是否有办法查看。 > 或者在启动的时候是可以通过日志打印出来吗? > > > > > > > > > > > > > > -- > > Best! > Aven > > > > > > 在 2020-12-16 19:22:19,"Xintong Song" <[hidden email]> 写道: > >可以使用这两个参数。 > > > > - containerized.heap-cutoff-ratio > > - containerized.heap-cutoff-min > > > >cutoff 的含义是从 container 内存中额外留出一部分,不作为 flink 的 heap/network/managed > >内存。这部分内存通常是用于 JVM、用户代码、第三方依赖的对外内存开销。Flink 计算 MaxDirectMemorySize 参数时也会把 > >cutoff 算进去,因此调大 cutoff 也可以起到放宽直接内存上限的效果。 > > > > > >另外,Flink 1.9 及以前的内存模型是比较混乱的,建议有条件的话尽快升级到新版本。 > > > > > >Thank you~ > > > >Xintong Song > > > > > > > >On Wed, Dec 16, 2020 at 7:07 PM 巫旭阳 <[hidden email]> wrote: > > > >> 报错信息如下 > >> Caused by: java.lang.OutOfMemoryError: Direct buffer memory at > >> java.nio.Bits.reserveMemory(Bits.java:693) > >> > >> at java.nio.DirectByteBuffer.(DirectByteBuffer.java:123) at > >> java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:311) > >> > >> at sun.nio.ch.Util.getTemporaryDirectBuffer(Util.java:241) > >> > >> at sun.nio.ch.IOUtil.read(IOUtil.java:195) > >> > >> at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:380) > >> > >> at > >> > org.apache.kafka.common.network.PlaintextTransportLayer.read(PlaintextTransportLayer.java:110) > >> > >> at > >> > org.apache.kafka.common.network.NetworkReceive.readFromReadableChannel(NetworkReceive.java:97) > >> > >> at > >> > org.apache.kafka.common.network.NetworkReceive.readFrom(NetworkReceive.java:71) > >> > >> at > >> > org.apache.kafka.common.network.KafkaChannel.receive(KafkaChannel.java:169) > >> > >> at > >> org.apache.kafka.common.network.KafkaChannel.read(KafkaChannel.java:150) > >> > >> at > >> > org.apache.kafka.common.network.Selector.pollSelectionKeys(Selector.java:355) > >> > >> > >> at org.apache.kafka.common.network.Selector.poll(Selector.java:303) > >> > >> at org.apache.kafka.clients.NetworkClient.poll(NetworkClient.java:349) > >> > >> at > >> > org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:226) > >> > >> > >> at > >> > org.apache.kafka.clients.consumer.KafkaConsumer.pollOnce(KafkaConsumer.java:1047) > >> > >> > >> at > >> > org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:995) > >> > >> > >> > >> 版本 > >> Flink:1.9.1 > >> kafka-client:0.10.0.1 > >> 环境 > >> on yarn > >> JVM参数 > >> -Xms14336m > >> -Xmx14336m > >> -XX:MaxDirectMemorySize=6144m > >> flink-conf.yml > >> 使用的是默认的参数 > >> Stream任务,并且没有使用RocksDB > >> > >> 目前初步怀疑是Flink 的堆外内存占用过大导致kafka consumer 无法申请堆外内存导致OOM。但根据官方文档的配置 > >> taskmanager.memory.fraction=0.7 这个应该在我的程序中不生效 > >> taskmanager.network.memory.fraction=0.1 > >> > >> > >> 这样的配置下来应该用户代码可使用的堆外内存为6144m*0.9=5529m > >> 我的问题是 > >> 在我当前的环境下是否还有我没注意到的Flink堆外内存配置,或者Flink需要占用的堆外内存是我所不了解的。 > >> 除了控制kafka comsumer 的流量以外有没有什么其他的调整方式? > >> > >> > >> Best > >> Aven > >> > >> > |
Free forum by Nabble | Edit this page |