版本: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状态都正常。
这,不是内存100%引起的问题嘛。。
内存100%只是个结果,同样的配置,其他节点都不会出现这种问题,只是这个节点,而且不止一次,是多次,都是这个节点。
重启,可以恢复,但过一段时间又会出现问题,有配置GC日志,但没有当时的日志,也就是说并没有达到GC的上限。
描述下该台机器的配置,集群情况,kafka设置的jvm等相关信息。
主机内存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内存,随时可回收)
都是单机部署,上面只有kafka服务,没有其他的了。
异常重现后,我通过tcpdump,分析发现是controll-broker节点rst了异常节点的ack包,怀疑是不是节点间的健康检查心跳包发送超时导致连接被强制关闭?心跳配置是哪个项目项来着?
防火墙确认过了吗?
网络超时这种异常,在kafka日志里找找最初的触发时间。
你的答案