поды падают в крашлуп совершенно случайно и не системно на разных источниках данных. Есть корреляция с нагрузкой на базы: чем выше нагрузка в период работы, тем чаще падения (на тестовом контуре их вообще нет, на проде и в нерабочие часы меньше в разы). В логах баз ничего интересного. В логах дебезиума такая ошибка:
Error occurred in org.postgresql.util.PSQLException: Database connection failed when writing to copy in io.debezium.connector.postgresql.PostgresStreamingChangeEventSource.commitOffset(PostgresStreamingChangeEventSource.java:386)
io.debezium.pipeline.ChangeEventSourceCoordinator.commitOffset(ChangeEventSourceCoordinator.java:172)
io.debezium.connector.common.BaseSourceTask.commit(BaseSourceTask.java:284)
io.debezium.embedded.EmbeddedEngine.commitOffsets(EmbeddedEngine.java:1003)
io.debezium.embedded.EmbeddedEngine.maybeFlush(EmbeddedEngine.java:977)
io.debezium.embedded.EmbeddedEngine$4.markBatchFinished(EmbeddedEngine.java:916)
io.debezium.embedded.ConvertingEngineBuilder$1.markBatchFinished(ConvertingEngineBuilder.java:95)
com.quadcode.analytics.wal_to_kafka.processing.EventProcessor$Live.$anonfun$commit$2(EventProcessor.scala:84)
scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
simple.metrics.models.impls.MetricMeter.time(MetricMeter.scala:43)
com.quadcode.analytics.wal_to_kafka.processing.EventProcessor$Live.$anonfun$commit$1(EventProcessor.scala:82)
scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
zio.internal.FiberContext.evaluateNow(FiberContext.scala:490)
zio.internal.FiberContext.$anonfun$fork$17(FiberContext.scala:772)
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base/java.lang.Thread.run(Thread.java:834
Версия Debezium - 1.7.2.final
Что уже было сделано: проверена вся инфраструктура,
Был апдейт Debezium на 1.7.2.final Выше не стали, потому что там вроде как нужна Kafka 3, у нас только Kafka 2.
Из диагностики стало понятно что Debezium в какой-то момент времени закрывает коннект к базе, но не закрывает стрим в кафку. И пробует читать дальше wal. Но так как коннект закрыт падает с ошибкой.
Кто-то сталкивался с таким или просто может подтолкнуть куда копать? Идеи кончились.
у JDBC драйвера Postgres есть параметр tcpKeepAlive=true, чтобы Postgres не закрывал подключение, в котором давно ничего не происходило
Обсуждают сегодня