gpt4 book ai didi

java - 卡夫卡经纪人在一段时间后失败了

转载 作者:行者123 更新时间:2023-11-30 07:46:53 28 4
gpt4 key购买 nike

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

其中一台kafka机器我们看到了一个奇怪的问题而其他kafka机器没有这个问题

问题是——当我们在几分钟后启动 kafka broker 时,它出现故障

这是日志:

来自kafka.err

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 机器上,而另外两台我们没有这个问题?合乎逻辑吗?

最佳答案

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

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

  • Kafka 代码中的一个错误,导致未使用的内存无法释放

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

  • 使用或配置不当。例如,您设置了一个流,连接到它,但不读取。或者读得太慢。待办事项不断增长,直到填满你的整个内存

  • Kafka 实例的内存限额过于严格。为了让它占用更多内存,请在 bash export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G" 中运行(尝试找到一个工作值)。此处有更多详细信息:https://stackoverflow.com/a/36649296/78569

  • JVM 选项cgroups 配置之间存在冲突。例如。您设置了 -Xmx2G 但 cgoups 中只有 1G (memory.limit_in_bytes)。

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

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

编辑
如果您在代理的配置和行为中没有发现明显的缺陷,您可以在崩溃时分析进程转储以查看所有内存去了哪里。为此,将 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=... 添加到 JVM 选项。然后,您可以将此转储加载到一些分析器(如 HeapWalker)中,并查找异常大的对象数量/大小。

关于java - 卡夫卡经纪人在一段时间后失败了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50289145/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com