Kafka连接器如何处理内存泄漏?

sycxhyv7  于 2021-06-08  发布在  Kafka
关注(0)|答案(1)|浏览(444)

我启动Kafka连接图像。我配置了将近25个正在运行的源和汇连接器,当我放到这个容器中时,我只看到1个java进程

root@connect:/# ps -ef | grep java
root         1     0  3 Jun20 ?        01:32:06 java -Xms256M -Xmx2G -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcurrent -Djava.awt.headless=true -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dkafka.logs.dir=/var/log/kafka -Dlog4j.configuration=file:/etc/kafka/connect-log4j.properties -cp /etc/kafka-connect/jars/*:/usr/share/java/kafka/*:/usr/share/java/confluent-common/*:/usr/share/java/kafka-serde-tools/*:/usr/share/java/monitoring-interceptors/*:/usr/bin/../share/java/kafka/*:/usr/bin/../share/java/confluent-support-metrics/*:/usr/share/java/confluent-support-metrics/* org.apache.kafka.connect.cli.ConnectDistributed /etc/kafka-connect/kafka-connect.properties
root      6263  6252  0 08:58 pts/1    00:00:00 grep java
root@connect:/#

这是否意味着当一个正在运行的自定义连接器发生内存泄漏时,它会使kafka connect节点崩溃?

4uqofj5v

4uqofj5v1#

多个线程在一个jvm中运行。但是,如果您只在一个connect任务上获得oom,那么它会破坏jvm,这就是为什么您应该添加更多服务器(因为您运行的是分布式模式)并通过设置 KAFKA_HEAP_OPTS 另外,如果运行容器,典型的模式可能是每个主题分组一个容器。例如,5个主题将用于elasticsearch,另外2个主题将用于hdfs,另外4个主题将用于jdbc,等等,这将构成3个单独的容器。这样,对于失败的java进程,您的“爆炸半径”就更小了
如果您使用的是汇合容器,请设置 CONNECT_GROUP_ID 为了对一组容器保持相同,还要确保所做的每个分组都有自己的配置、偏移和状态主题

相关问题