【问题标题】:How kafka connector works with memory leaks?kafka 连接器如何处理内存泄漏?
【发布时间】:2018-12-01 17:20:53
【问题描述】:

我启动了 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 连接节点崩溃?

【问题讨论】:

    标签: apache-kafka apache-kafka-connect


    【解决方案1】:

    多个线程在单个 JVM 中运行。但是,如果您只在一个连接任务上获得 OOM,那么它会破坏 JVM,这就是为什么您应该添加更多服务器(因为您正在运行分布式模式)并通过设置 @987654321 将堆从最大 2G 增加@

    另外,如果运行容器,典型的模式可能是每个主题分组一个容器。例如,5 个主题将用于 Elasticsearch,另外 2 个主题将用于 HDFS,另外 4 个主题将用于 JDBC,等等。将创建 3 个单独的容器。这样,对于失败的 Java 进程,您的“爆炸半径”会更小

    如果您使用 Confluent 容器,请将 CONNECT_GROUP_ID 设置为一组容器相同,同时确保您创建的每个分组都有自己的配置、偏移量和状态主题

    【讨论】:

    • 感谢您的回答。你知道kafka connect集群是如何相互通信的吗?
    • 通过 Kafka 消费者组
    • 分布式连接工作人员通过 kafka 主题进行通信。在 Confluent 发行版附带的示例 connect-distributed.properties 文件中,默认情况下它们共享主题 connect-configs、connect-offsets 和 connect-statuses(或非常相似的东西)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-14
    • 2012-04-22
    • 1970-01-01
    • 2020-12-07
    • 2017-08-11
    • 1970-01-01
    相关资源
    最近更新 更多