kafka集群controller节点连接不上受管节点

Jacky 发表于: 2019-10-28   最后更新时间: 2019-10-28  

版本:kafka_2.11-2.1.0

背景:kafka在运行一段时间后,controller节点会连接不上其中一个节点

控制节点日志:java.io.IOException: Connection to 5 was disconnected before the response was read

受管节点无异常日志,但是主机上netstate看有很多close_wite连接,并且主机内存消耗达到100%,生产者和消费者都有报错说连接不上节点kafka: broker not connected

zk集群正常,查看kafka每个topic状态都正常。



您需要解锁本帖隐藏内容请: 点击这里
本帖隐藏的内容




上一条: kafka消费端消费一批消息时有时候开头几条消息没有被消费到是什么问题?
下一条: kafka一条消息从生产到消费整个过程耗时 400-600ms 正常?

  • 这,不是内存100%引起的问题嘛。。

    • 内存100%只是个结果,同样的配置,其他节点都不会出现这种问题,只是这个节点,而且不止一次,是多次,都是这个节点。

        • 重启,可以恢复,但过一段时间又会出现问题,有配置GC日志,但没有当时的日志,也就是说并没有达到GC的上限。

            • 主机内存32G,JVM -Xmx4G -Xms4G,集群有10个节点,zk是5个节点
              port=9092
              host.name=主机IP
              broker.id=5
              num.network.threads=20
              num.io.threads=8
              socket.send.buffer.bytes=102400
              socket.receive.buffer.bytes=102400
              socket.request.max.bytes=104857600
              num.partitions=64
              num.replca.fetchers=3
              num.recovery.threads.per.data.dir=1
              auto.create.topics.enable =false
              delete.topic.enable=true
              default.replication.factor =2
              log.retention.hours=8
              log.segment.bytes=1073741824
              log.retention.check.interval.ms=300000
              log.cleaner.enable=true
              log.dirs=/data
              zookeeper.connection.timeout.ms=30000
              zookeeper.connect=ZK节点
              connections.max.idle.ms=600000

                • Kafka配置没问题,是否能监控到哪个应用把内存占那么高?(理论kafka最大是4G,jdk1.8的话额外的内存会只占buffer内存,随时可回收)

                    • 异常重现后,我通过tcpdump,分析发现是controll-broker节点rst了异常节点的ack包,怀疑是不是节点间的健康检查心跳包发送超时导致连接被强制关闭?心跳配置是哪个项目项来着?