首页 > 解决方案 > Java Kafka 控制台消费者堆空间不足

问题描述

我在控制台中运行以下命令。kafka-console-consumer 并收到内存不足错误:java.lang.OutOfMemoryError: Java heap space。我该如何解决这个问题?尝试应用此资源,但我没有主题文件。

Kafka Connect 堆空间不足

安慰:

kafka-console-consumer --bootstrap-server localhost:9092 --topic encounter.personEvent

应用程序.Yml

kafka:
  topic: encounter
  event: personEvent

下面的错误信息:

ERROR Error processing message, terminating consumer process:  (kafka.tools.ConsoleConsumer$)
java.lang.OutOfMemoryError: Java heap space
    at java.base/java.nio.HeapByteBuffer.<init>(HeapByteBuffer.java:64)
    at java.base/java.nio.ByteBuffer.allocate(ByteBuffer.java:363)
    at org.apache.kafka.common.memory.MemoryPool$1.tryAllocate(MemoryPool.java:30)
    at org.apache.kafka.common.network.NetworkReceive.readFrom(NetworkReceive.java:113)
    at org.apache.kafka.common.network.KafkaChannel.receive(KafkaChannel.java:452)
    at org.apache.kafka.common.network.KafkaChannel.read(KafkaChannel.java:402)
    at org.apache.kafka.common.network.Selector.attemptRead(Selector.java:674)
    at org.apache.kafka.common.network.Selector.pollSelectionKeys(Selector.java:576)
    at org.apache.kafka.common.network.Selector.poll(Selector.java:481)
    at org.apache.kafka.clients.NetworkClient.poll(NetworkClient.java:551)
    at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:265)
    at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:236)
    at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:215)
    at org.apache.kafka.clients.consumer.internals.AbstractCoordinator.ensureCoordinatorReady(AbstractCoordinator.java:246)
    at org.apache.kafka.clients.consumer.internals.ConsumerCoordinator.poll(ConsumerCoordinator.java:480)
    at org.apache.kafka.clients.consumer.KafkaConsumer.updateAssignmentMetadataIfNeeded(KafkaConsumer.java:1262)
    at org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:1231)
    at org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:1211)
    at kafka.tools.ConsoleConsumer$ConsumerWrapper.receive(ConsoleConsumer.scala:454)
    at kafka.tools.ConsoleConsumer$.process(ConsoleConsumer.scala:101)
    at kafka.tools.ConsoleConsumer$.run(ConsoleConsumer.scala:75)
    at kafka.tools.ConsoleConsumer$.main(ConsoleConsumer.scala:52)
    at kafka.tools.ConsoleConsumer.main(ConsoleConsumer.scala)

标签: javaapache-kafka

解决方案


KAFKA_HEAP_OPTS是所有 Kafka CLI 脚本中的共享 shell 变量,因此您在链接帖子中引用的答案是正确的。

例如

KAFKA_HEAP_OPTS='-Xmx1G' kafka-console-consumer --bootstrap-server localhost:9092 --topic encounter.personEvent

我的 api 在 localhost:8080/swagger-ui.html 上运行。并调用 Kafka 生产者事件

然后,您希望 HTTP 客户端将 HTTP 请求 POST 到localhost:8080. 反过来,正如您所说,这会生成一条 Kafka 消息,该消息被发送到localhost:9092(默认情况下)。您需要从 Kafka消费,而不是 HTTP 服务器


推荐阅读