開始後Kafka接続(connect-standalone
)、次のように開始した直後に私のタスクが失敗します:
Java.lang.OutOfMemoryError: Java heap space
at Java.nio.HeapByteBuffer.<init>(HeapByteBuffer.Java:57)
at Java.nio.ByteBuffer.allocate(ByteBuffer.Java:335)
at org.Apache.kafka.common.network.NetworkReceive.readFromReadableChannel(NetworkReceive.Java:93)
at org.Apache.kafka.common.network.NetworkReceive.readFrom(NetworkReceive.Java:71)
at org.Apache.kafka.common.network.KafkaChannel.receive(KafkaChannel.Java:154)
at org.Apache.kafka.common.network.KafkaChannel.read(KafkaChannel.Java:135)
at org.Apache.kafka.common.network.Selector.pollSelectionKeys(Selector.Java:343)
at org.Apache.kafka.common.network.Selector.poll(Selector.Java:291)
at org.Apache.kafka.clients.NetworkClient.poll(NetworkClient.Java:260)
at org.Apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.Java:232)
at org.Apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.Java:180)
at org.Apache.kafka.clients.consumer.internals.AbstractCoordinator.ensureCoordinatorReady(AbstractCoordinator.Java:193)
at org.Apache.kafka.clients.consumer.internals.ConsumerCoordinator.poll(ConsumerCoordinator.Java:248)
at org.Apache.kafka.clients.consumer.KafkaConsumer.pollOnce(KafkaConsumer.Java:1013)
at org.Apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.Java:979)
at org.Apache.kafka.connect.runtime.WorkerSinkTask.pollConsumer(WorkerSinkTask.Java:316)
at org.Apache.kafka.connect.runtime.WorkerSinkTask.poll(WorkerSinkTask.Java:222)
at org.Apache.kafka.connect.runtime.WorkerSinkTask.iteration(WorkerSinkTask.Java:170)
at org.Apache.kafka.connect.runtime.WorkerSinkTask.execute(WorkerSinkTask.Java:142)
at org.Apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.Java:140)
at org.Apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.Java:175)
at Java.util.concurrent.Executors$RunnableAdapter.call(Executors.Java:511)
at Java.util.concurrent.FutureTask.run(FutureTask.Java:266)
at Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1142)
at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:617)
at Java.lang.Thread.run(Thread.Java:745)
いくつかのKafkaのドキュメントにヒープスペースの記載があります。「デフォルト」で試して、問題がある場合にのみ変更するように指示していますが、ヒープスペースを変更する手順はありません。
KAFKA_HEAP_OPTS
環境変数を設定することにより、最大および初期ヒープサイズを制御できます。
次の例では、512 MBの開始サイズと1 GBの最大サイズを設定します。
KAFKA_HEAP_OPTS="-Xms512m -Xmx1g" connect-standalone connect-worker.properties connect-s3-sink.properties
Kafka connect-standalone
などのコマンドを実行すると、kafka-run-class
スクリプトが呼び出されます デフォルトのヒープサイズ256 MBを設定KAFKA_HEAP_OPTS
環境変数がまだ設定されていない場合。
問題に直面していても、特定のトピックのプロデューサーとコンシューマーを開始できませんでした。また、不要なログファイルとトピックもすべて削除しました。ただし、これは問題とは関係ありません。
kafka-run-class.sh
を変更してもうまくいきませんでした。以下のファイルを変更しました
kafka-console-consumer.sh
kafka-console-producer.sh
oOMエラーの発生を停止しました。この後、消費者と生産者の両方がうまく働きました。
サイズをKAFKA_HEAP_OPTS="-Xmx1G"
に増やしたところ、512m早くなりました。