首页 > 解决方案 > 汇合连接,Debezium,java.lang.OutOfMemoryError

问题描述

我们在 Amazon EKS 中托管了一个 Confluent Connect v5.01 容器集群,以运行 Debezium for SQL Server 连接器 v0.9.5 的多个实例。有时,当我们重新配置其中一个连接器时,它会触发重新平衡,并且一个连接器(并不总是同一个)似乎变得不正常并消耗了分配给容器的所有内存。这使我们的日志充满了以下日志条目的数万个细微变化......

INFO Skipping change ChangeTablePointer [changeTable=Capture instance "REDACTED" [sourceTableId=REDACTED, changeTableId=REDACTED, startLsn=008e7c10:00313f98:0010, changeTableObjectId=914583783, stopLsn=NULL], resultSet=SQLServerResultSet:2825973, completed=false, currentChangePosition=008e9893:00010320:0035(008e9893:00010230:0046)] as its position is smaller than the last recorded position 008e9893:00010320:0035(008e9893:00010320:0033) (io.debezium.connector.sqlserver.SqlServerStreamingChangeEventSource)

...在最终达到容器的内存限制之前,这会导致容器崩溃。

Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "kafka-producer-network-thread | REDACTED-dbhistory"

这会触发另一个重新平衡,从而重新启动循环。

我们已将问题追溯到 Debezium 中的这行代码,这似乎表明连接器在重新启动时试图找到它停止的位置,但在此过程中消耗了太多内存。您可以提供任何线索来帮助我们追踪和解决问题,我们将不胜感激。

标签: javaapache-kafka-connectconfluent-platformdebezium

解决方案


推荐阅读