Как исправить: java.lang.OutOfMemoryError: прямая буферная память в потребителе flink kafka - PullRequest
0 голосов
/ 28 апреля 2019

Мы работаем с 5-узловым кластером Flink (1.6.3) над kubernetes с источником раздела Kafka из 5 разделов.Из этой темы читается 5 заданий (с разными группами потребителей), каждое с параллелизмом = 5.

Каждый диспетчер задач работает с оперативной памятью 10 ГБ, а размер кучи диспетчера задач ограничен 2 ГБ.Загрузка при загрузке довольно мала (100-200 мсг в секунду), а средний размер сообщения составляет ~ 4-8kb.все работы выполняются в течение нескольких часов.по истечении некоторого времени мы неожиданно видим, что одно или несколько заданий перестали работать:

ava.lang.OutOfMemoryError: Direct buffer memory
    at java.nio.Bits.reserveMemory(Bits.java:666)
    at java.nio.DirectByteBuffer.<init>(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)
    at org.apache.flink.streaming.connectors.kafka.internal.KafkaConsumerThread.run(KafkaConsumerThread.java:257)

мигает, перезапускает задание, но оно продолжает сбой в этом исключении.мы попытались уменьшить опрос записей, как было предложено здесь: Потребители Kafka бросили java.lang.OutOfMemoryError: Прямая буферная память Мы также попытались увеличить размер кучи кафки, как предложено здесь: Flink + Kafka, java.lang.OutOfMemoryError, когда параллелизм> 1 , хотя я не могу понять, как не удается выделить память в процессе flink, как-то связано с памятью jvm процесса брокера kafka, и я не вижу ничего, чтобы указыватьoom в журналах брокера.

Что может быть причиной этого сбоя?что еще мы должны проверить?

Спасибо!

...