我们的集群中有带有 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机器上,而另两台我们没有这个问题?这合乎逻辑吗?
您有一个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