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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kafka连接器如何处理内存泄漏?相关的知识,希望对你有一定的参考价值。

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

答案

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

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

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

以上是关于kafka连接器如何处理内存泄漏?的主要内容,如果未能解决你的问题,请参考以下文章

前端如何处理内存泄漏

JavaScript如何工作 3之 内存管理+如何处理4个常见的内存泄漏

如何处理以设置间隔卸载组件以避免内存泄漏

JavaScript如何工作 3之 内存管理+如何处理4个常见的内存泄漏

How Javascript works (Javascript工作原理) 内存管理及如何处理 4 类常见的内存泄漏问题

如何处理 Kafka Connect Sink 中的背压?