kafka报 1 partitions have leader brokers without a matching listener,including [gw651_downstream-0]

全幼儿园最帅 发表于: 2021-05-10   最后更新时间: 2021-09-16 15:00:44   2,773 游览

昨天刚部署好kafka集群,是在windows虚拟机上部署的,三个zookeeepr和三个kafka,都是部署在同一台虚拟机上。然后今天同事测试项目代码连接我部署的kafka集群时,下午他就发了这个报错信息给我:

1 partitions have leader brokers without a matching listener,including [gw651_downstream-0].

我打开虚拟机,去到kafka和zookeeper运行黑窗口中就看到了如下错误,想请问下是什么原因?我该怎么解决这个bug?

其中一个zookeeper黑窗口发现如下信息:

java.io.IOException:远程主机强迫关闭了一个现有的连接.
        at sun.nio.ch.SocketDispatcher.read0<Native Method>
        at sun.nio.ch.SocketDispatcher.read<SocketDispatcher.java.java:43>
        at sun.nio.ch.IOUtil.readIntoNativeBuffer<IOUtil.java:223>
        at sun.nio.ch.IOUtil.read<IOUtil.java:197>
        at sun.nio.ch.SocketChannelImpl.read<SocketChannelImpl.java:380>
        at org.apache.zookeeper.server.NIOServerCnxn.doIO<NIOServerCnxn.java:324>

其中一个Kafka黑窗口有发现如下信息:

[error occurred during error reporting (nul1l). id 0xc0000005 ]

# There is insufficient memory for the Java Runtine Environnent to continue。
# Native memory allocation (malloc) failed to allocate 32744 bytes for ChunkPoo1::allocate
# An error report file with more infornation is saved as:
# C:\javaPro\kafka\kafka_2.12-2.5.0-1\bin\windows\hs_err_pid3984.log

# Compiler replay data is saved as:
# C:\javaPro\kafka\kafka_2.12-25.0-1\bin\windows\replay_pid3984.log

还有一个kafka黑窗口发现如下:

Caused by: java.io.I0Exception:存储空间不足,无法处理此命令.
       at java.io.FileOutputStream.writeBytes<Native Method>
       at java.io.FileOutputStream.write<FileOutputStream.java:326>
       at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221>
       at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java-291)
       at sun.nio.cs.StreamEncoder.implFlush<StreamEncoder.java:295>
       at sun.nio.cs.StreamEncoder.flush<OutputStreamWriter.java:229)
       at java.io.BufferedWriter.flush(BufferedWriter.java:254>
       at kafka.server.checkpoints.CheckpointFile.liftedTree1$1<CheckpointFile.scala:66>
       at kafka.server.checkpoints.CheckpointFile.write<checkpointFile.scala:50>
       at kafka.server.checkpoints.0ffsetCheckpointFile.write<OffsetCheckpointFile.scala:59>
       at kafka.server.ReplicaManager.$anonfun$checkpointHighWatermarks$8<ReplicaManager.scala:1601>
.....

后面还有一句话:

WARN Stopping serving logs in dir C:\tmp\kafka-logs-2 <kafka.log.LogManager>
ERROR Shutdown broker because all log dirs in C:\tmp\kafka-logs-2 have failed <kafka.log.LogManager>

执行kafka命令时信息显示如下:

kafka-topics.sh --zookeeper localhost:2181 --describe --topic test600
    Topic: test600    PartitionCount: 1    ReplicationFactor: 1    Configs:
    Topic: test600    Partition: 0    Leader: none    Replicas: 2    Isr: 2
kafka-topics.bat --zookeeper localhost:2182 --describe --topic gw651_downstream
    Topic: gw651_downstream    PartitionCount: 1    ReplicationFactor: 1    Configs:
    Topic: gw651_downstream    Partition: 0    Leader: none    Replicas: 1    Isr: 1

zk的连接关闭偶尔出现是可以忽视,并不重要,因为很多客户端连接zk,主动断开连接是很正常的。

Caused by: java.io.I0Exception:存储空间不足,无法处理此命令.

真正的原因是磁盘不足了

我是刚部署两天是什么原因导致磁盘空间不足的?磁盘空间不足怎么解决?我执行kafka命令时显示的信息是不是说明我某一个kafka节点挂了?

kafka数据默认保留7天,配置在config/server.properties

log.retention.hours=72

可以根据你的磁盘量,配置保留时间少一点,保障磁盘不会在写满。

所有的节点都需要修改,修改完成后,需要重启kafka。

好的,谢谢大佬

我看到网上有人说可以将下面三个参数改成这样,但不清楚作者当时的kafka是单机的还是集群,大佬帮我看下,集群是否可以更改这三个属性,感激不尽

offsets.topic.replication.factor=3
transaction.state.log.replication.factor=3
transaction.state.log.min.isr=2

都不是,我给你的是,这里有这些参数的说明
https://www.orchome.com/472

我之前发的idea控制台信息你怎么删啦呀?

Group coordinator lookup failed: The coordinator is not available

Coordinator discovery failed, refreshing metadata,

这两个报错,

我上网查好像有部分博主说要改offsets.topic.replication.factor=3这个属性, 大佬帮我确定下吧,这三个属性要不要改? 急急急呀,谢谢~~

不同的问题不能串,默认的参数就可以了。

好的 ,十分谢谢

你的答案

查看kafka相关的其他问题或提一个您自己的问题