Сбой в соединителе Debezium postgres kafka из-за проблемы java кучи - PullRequest
0 голосов
/ 26 апреля 2020

у нас есть 13 разъемов kafka debezium postgres, работающих на кластере Strimzi kafkaconnect. Один из них терпит неудачу с Caused by: java.lang.OutOfMemoryError: Java heap space. Увеличены параметры jvm с 2 г до 4 г, но все равно происходит сбой с той же проблемой.

полный журнал:

java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOfRange(Arrays.java:3664)
    at java.lang.String.<init>(String.java:207)
    at com.fasterxml.jackson.core.util.TextBuffer.setCurrentAndReturn(TextBuffer.java:696)
    at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._finishAndReturnString(UTF8StreamJsonParser.java:2405)
    at com.fasterxml.jackson.core.json.UTF8StreamJsonParser.getValueAsString(UTF8StreamJsonParser.java:312)
    at io.debezium.document.JacksonReader.parseArray(JacksonReader.java:219)
    at io.debezium.document.JacksonReader.parseDocument(JacksonReader.java:131)
    at io.debezium.document.JacksonReader.parseArray(JacksonReader.java:213)
    at io.debezium.document.JacksonReader.parseDocument(JacksonReader.java:131)
    at io.debezium.document.JacksonReader.parse(JacksonReader.java:102)
    at io.debezium.document.JacksonReader.read(JacksonReader.java:72)
    at io.debezium.connector.postgresql.connection.wal2json.NonStreamingWal2JsonMessageDecoder.processMessage(NonStreamingWal2JsonMessageDecoder.java:54)
    at io.debezium.connector.postgresql.connection.PostgresReplicationConnection$1.deserializeMessages(PostgresReplicationConnection.java:418)
    at io.debezium.connector.postgresql.connection.PostgresReplicationConnection$1.readPending(PostgresReplicationConnection.java:412)
    at io.debezium.connector.postgresql.PostgresStreamingChangeEventSource.execute(PostgresStreamingChangeEventSource.java:119)
    at io.debezium.pipeline.ChangeEventSourceCoordinator.lambda$start$0(ChangeEventSourceCoordinator.java:99)
    at io.debezium.pipeline.ChangeEventSourceCoordinator$$Lambda$464/1759003957.run(Unknown Source)
    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:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)```

Ответы [ 2 ]

1 голос
/ 26 апреля 2020

Попробуйте настроить ниже Debezium реквизит

  • Увеличить max.batch.size
  • Уменьшить max.queue.size
  • Настройте offset.flush.interval.ms в соответствии с требованиями приложения
0 голосов
/ 27 апреля 2020

Похоже, вы получили очень большое сообщение о транзакции и не удалось выполнить синтаксический анализ из-за ограничений памяти. wal2json_streaming должен разбить сообщение на более мелкие порции, чтобы избежать этой проблемы.

Обычно, если возможно, используйте декодеры protobuf или pgoutput, так как они передают сообщения из базы данных за изменение, а не за транзакцию.

...