Kafka Verbinden running out of heap space
Nach dem Start Kafka Verbinden (connect-standalone
), meine Aufgabe nicht sofort nach dem Start mit:
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)
Gibt es eine Erwähnung der heap-Speicher in einigen Kafka-Dokumentation, zu sagen, Sie versuchen es mit "der Standard" und nur ändern, wenn es Probleme gibt, aber es gibt keine Anweisungen zum ändern der heap-Speicher.
Die "Standard-Größe" zu sein scheint zur Laufzeit bestimmt. Es scheint groß genug sein, bei meiner Maschine (8GB). Ich bekomme immer noch die OOM Fehler. Außerdem gibt es alle möglichen anderen Ausnahmen im connector-Protokoll, der server Stände. Sehr frustrierend.
Von dem, was ich fand, es ist hart codiert, um 256M: github.com/apache/kafka/blob/trunk/bin/kafka-run-class.sh#L209
ohhh! danke. Das erklärt.
Von dem, was ich fand, es ist hart codiert, um 256M: github.com/apache/kafka/blob/trunk/bin/kafka-run-class.sh#L209
ohhh! danke. Das erklärt.
InformationsquelleAutor Robin Daugherty | 2017-01-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die max und die anfängliche heap-Größe durch Einstellung der
KAFKA_HEAP_OPTS
Umgebungsvariable.Im folgenden Beispiel wird ein Start-Größe von 512 MB und eine maximale Größe von 1 GB.
Beim ausführen einer Kafka-Befehl wie
connect-standalone
, diekafka-run-class
Skript wird aufgerufen, die legt eine Standard-heap-Größe von 256 MB in derKAFKA_HEAP_OPTS
Umgebungsvariable, wenn es nicht bereits eingestellt.-Xmx2g
, und es ist vorkafka-run-class
- github.com/apache/kafka/commit/...Einen anderen Weg, um das gleiche zu erreichen?
Die Methode in meiner Antwort ist die gleiche, nur der default-Wert geändert.
InformationsquelleAutor Robin Daugherty
Sogar ich Stand vor dem Problem konnte nicht gestartet werden, mein Produzent und konsument für ein bestimmtes Thema. Ebenfalls gelöscht werden alle nicht mehr benötigten log-Dateien und Themen.Auch wenn das nicht im Zusammenhang mit dem Thema.
Änderung der
kafka-run-class.sh
funktionierte nicht für mich. Ich habe die Dateien untergestoppt und immer OOM Fehler. Sowohl für Verbraucher und Produzent arbeitete fein nach.
Erhöht die Größe zu
KAFKA_HEAP_OPTS="-Xmx1G"
war 512m früher.KAFKA_HEAP_OPTS
ist eine Umgebungsvariable und sollte auf der Befehlszeile oder in der Dienst gestartet wird, dass die Kafka-job. Sie sollten nicht ändern Sie die Skripts, die Teil der Kafka-Verteilung, wie Sie werden ausgelöscht, wenn Sie ein update Kafka.Ohhh...Krank notieren Sie sich diese.
InformationsquelleAutor Sagarmatha