当前位置: 首页 > 知识库问答 >
问题:

一段时间后,Kafka经纪人失败了

谭泳
2023-03-14

我们的集群中有带有 Ambari GUI 的 Hadoop 集群版本 2.6.4,我们有 3 台 Kafka 机器,它们是独立的机器,而 3 台 Zookeper 服务器安装在其他机器上 - master01/02/03

其中一台Kafka机器出现了一个奇怪的问题,而其他Kafka设备没有这个问题

问题是,当我们在几分钟后启动Kafka经纪人时,它会崩溃

以下是日志:

出自Kafka.呃

Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "ThrottledRequestReaper-Fetch"

Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "ExpirationReaper-1002"

Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "kafka-network-thread-1002-PLAINTEXT-2"
Exception in thread "ExpirationReaper-1002" Exception in thread "ExpirationReaper-1002" java.lang.OutOfMemoryError: Java heap space
java.lang.OutOfMemoryError: Java heap space

Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "ExpirationReaper-1002"
Exception in thread "metrics-meter-tick-thread-2" java.lang.OutOfMemoryError: Java heap space
Exception in thread "metrics-meter-tick-thread-3" java.lang.OutOfMemoryError: Java heap space
Exception in thread "metrics-meter-tick-thread-4" java.lang.OutOfMemoryError: Java heap space
Exception in thread "metrics-meter-tick-thread-5" java.lang.OutOfMemoryError: Java heap space

Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "main-SendThread(master02.sys87.com:2181)"
Exception in thread "metrics-meter-tick-thread-6" java.lang.OutOfMemoryError: Java heap space
Exception in thread "metrics-meter-tick-thread-1" java.lang.OutOfMemoryError: Java heap space
Exception in thread "metrics-meter-tick-thread-7" java.lang.OutOfMemoryError: Java heap space
Exception in thread "metrics-meter-tick-thread-9" java.lang.OutOfMemoryError: Java heap space
Exception in thread "metrics-meter-tick-thread-10" java.lang.OutOfMemoryError: Java heap space
Exception in thread "metrics-meter-tick-thread-11" java.lang.OutOfMemoryError: Java heap space
Exception in thread "metrics-meter-tick-thread-1" java.lang.OutOfMemoryError: Java heap space

从日志的读取来看,这看起来像是kafka机器上的“分配的堆空间”

对此有什么建议和解决办法吗?

第二

我们如何解释这个问题在一台Kafka机器上,而另两台我们没有这个问题?这合乎逻辑吗?

共有1个答案

欧阳玺
2023-03-14

您有一个OutOfMemoryError,这意味着在某个时候Kafka实例需要分配更多的内存,发现要么没有可用的物理内存,要么它达到了JVM中设置的限制(注意Kafka是用Java/Scala编写的,所以在JVM中运行)选项,调用垃圾收集器来释放一些内存,但无法用它释放足够的内存。

为什么它会发生?有多种可能的原因。

>

  • Kafka代码中的一个错误,阻止释放未使用的内存

    当前机器无法处理的大量负载

    使用或配置不当。例如,您设置了一个流,连接到它,但不读取。或者读得太慢。积压不断增加,直到填满您的整个内存

    Kafka实例的内存允许量过于严格。要让它在bash中运行更多内存,请导出KAFKA_HEAP_OPTS="-Xmx1G-Xms1G"(尝试查找工作值)。更多详细信息:https://stackoverflow.com/a/36649296/78569

    JVM选项cgroup配置之间的冲突。例如,您在cgoups(memory.limit_in_bytes)中设置-Xmx2G但仅设置1G。

    不正确地使用/配置docker(它使用使用cgroups的lxc)或其他虚拟化/容器化工具。我听说在JVM选项和cgroups限制之间存在一些误解,这种误解只在Java的beta版中得到解决。

    这不是一个完整的列表,而是一个探索问题所在的开始。

    EDIT
    如果您在代理的配置和行为中没有看到明显的缺陷,您可以在崩溃时分析进程转储以查看所有内存的去向。为此,请将-XX: HeapDunpOnOutOfMemoryError-XX: HeapDunpPath=…添加到JVM选项中。然后您可以将此转储加载到诸如HeapWalker之类的分析器中,并查找异常大的对象数量/大小。

  •  类似资料:
    • 我有4个Kafka和debezium一起运行。经过几天的良好运行后,三台kafka机器脱离网络一段时间,在< code > connect distributed . out 日志文件中,我收到了许多包含以下错误的消息: 我有4台Kafka机器,经纪人从0到3 动物园管理员: <代码>192.168.240.70 关注我的 - 除了之外,有相同的 指向安装 Kafka 的计算机的相同 IP,并且

    • 我正在尝试仅为代理间kerberos配置Kafka代理。然而,由于它似乎也想通过Kerberos连接到Zookeeper,所以我似乎总是遇到错误。我目前还没有设置任何Zookeeper键。 我的Kafka代理 JAAS 配置如下: 服务器属性 我用上述配置得到的错误如下: 换句话说,我只想要经纪人到经纪人的 kerberos 和经纪人 - 动物园管理员的普通SASL_SSL。这可能吗?

    • 我知道生产者/消费者需要与经纪人交谈以了解分区的领导者。经纪人与zk交谈以告诉他们加入了集群。 是真的吗 经纪人从zk知道谁是给定分区的负责人 zk发现经纪人离开/死亡。然后重新选举领导人,并向所有经纪人发送新的领导人信息 问题: 为什么我们需要经纪人相互沟通?这只是为了让tehy可以移动分区,或者他们也可以互相查询元数据。如果是这样,元数据交换的例子是什么

    • 我有两个< code>kafka 0.10.1的代理集群,之前在我的开发服务器上正确运行< code>zookeeper 3.3.6。 我最近尝试将broker版本升级到最新的,但没有开始。配置没有太大变化 谁能告诉我可能会出什么问题吗。为什么经纪人没有起步? 已更改服务器。代理服务器1上的属性 已更改代理服务器2上的server.properties 注意: 1.Zookeeper正在两台服务器

    • 我在Windows子系统Linux上安装了kafka,并开始使用命令服务启动,所有服务都已启动。现在,当我尝试从Windows运行我的kafka-spring应用程序时,它显示以下错误:- 无法建立与节点-1(localhost/127.0.0.1:9092)的连接。经纪人可能不可用。 我的服务器属性是:- 我哪里出错了???

    • 在Flink中,我执行以下代码: 我推出3次同样的工作。 如果我用一个代理执行这段代码,它工作得很好,但是用3个broke(在3个不同的机器上)只读取一个分区。 null