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

时间:2018-06-22 09:03:42

标签: apache-kafka apache-kafka-connect

我启动kafka connect映像。我在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节点崩溃吗?

1 个答案:

答案 0 :(得分:1)

多个线程在单个JVM中运行。但是,请确保如果仅在一个连接任务上获得OOM,那么它将破坏JVM,这就是为什么您应该添加更多服务器(因为您正在运行分布式模式)并通过设置{{ 1}}

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

如果您使用的是Confluent容器,请将KAFKA_HEAP_OPTS设置为与一组容器相同,还请确保您进行的每个分组都有其自己的配置,偏移量和状态主题