当debezium连接器从你的sql服务器获取数据时,有没有办法限制kafka连接堆空间

Posted

技术标签:

【中文标题】当debezium连接器从你的sql服务器获取数据时,有没有办法限制kafka连接堆空间【英文标题】:is there a way to limit kafka connect heap space when debezium connector is fetching data from your sql server 【发布时间】:2021-01-27 20:37:19 【问题描述】:

我正在尝试设置一个从 SQL 服务器获取数据以与 apache kafka 一起使用的连接器。我已经使用 docker-compose 文件设置了所有 kafka 服务,但是 SQL 服务器位于另一台服务器上。 这是我在 ksqldb 中的 debezium 连接器的配置:

create source connector sql_connector with 
('connector.class'='io.debezium.connector.sqlserver.SqlServerConnector',
'database.server.name'='sqlserver',
'database.hostname'= 'xxxxx',
'database.port'='1433',
'database.user'= 'xxxx',
'database.password'= 'xxxxxx',
'database.dbname'='xxxxxxxxx',
'database.history.kafka.bootstrap.servers'='broker:29092',
'database.history.kafka.topic'='dbz_dbhistory.sqlserver.asgard-01');

当我这样做时,我得到一个连接器已成功创建的响应,但是当我通过对我的连接器使用“显示连接器”查询 ksqldb 时,我收到以下错误消息:

io.confluent.ksql.util.KsqlServerException: org.apache.http.conn.HttpHostConnectException: Connect to connect:8083 [connect/172.18.0.6] failed: Connection refused (Connection refused)
Caused by: org.apache.http.conn.HttpHostConnectException: Connect to
        connect:8083 [connect/172.18.0.6] failed: Connection refused (Connection
        refused)
Caused by: Could not connect to the server.
Caused by: Could not connect to the server.

当我检查我的 kafka 连接日志时,我可以看到它向服务器发出 select 语句,但过了一会儿我收到以下错误并且我的 kafka 连接关闭:

OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000b5400000, 118489088, 0) failed; error='Not enough space' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 118489088 bytes for committing reserved memory.
# An error report file with more information is saved as:

关于如何解决这个问题的任何想法?其他的只是给我的服务器更多的内存。

【问题讨论】:

你的意思是堆空间,不是 RAM,对吧? 是的,我的意思是堆空间,我对 kafka 很陌生,还不知道正确的术语 堆大小是 JVM,与 Kafka 无关。在 ksql 和 connect 的启动脚本中,可以找到用于调整内存使用的属性 在哪里可以找到这些启动脚本? 是的,我肯定要增加服务器的总内存,但我想我得到了我想要的,感谢您的帮助 【参考方案1】:

您的计算机的可用内存少于 ~118MB:

Native memory allocation (mmap) failed to map 118489088 bytes for committing reserved memory

您需要增加或释放机器上的内存才能启动 JVM。如果它正在运行,您可以使用以下环境变量更改 JVM 的堆内存设置:

KAFKA_HEAP_OPTS="-Xms256M -Xmx2G"

【讨论】:

以上是关于当debezium连接器从你的sql服务器获取数据时,有没有办法限制kafka连接堆空间的主要内容,如果未能解决你的问题,请参考以下文章

Debezium MS SQL Server 连接器问题

Kafka 将 Debezium 与 ms sql 服务器连接起来。密钥提取配置问题

(KAFKA Oracle DEBEZIUM)无法连接:无法解析Oracle数据库版本

debezium - 模式注册表问题

KSQLDB - 从 debezium cdc 源连接器获取数据并将 Stream 与表连接

Kafka Connect Debezium postgres