Kafka集群出现ReplicaFetcherThread抓取错误,是否为副本同步异常?
问题描述
生产环境Kafka集群包含5台部署在RHEL 7.6系统上的Broker,版本为0.10,集群副本因子为3,Broker ID为1、2、3、4、5。目前所有Broker的server.log中均出现大量Error in fetch Kafka.server.ReplicaFetcherThread异常日志,具体报错内容为:
[2023-11-24 12:51:48,991] WARN [ReplicaFetcherThread-6-4], Error in fetch kafka.server.b$FetchRequest@2149d051 (kafka.server.ReplicaFetcherThread) java.io.IOException: Connection to 4 was disconnected before the response was read at kafka.utils.NetworkClientBlockingOps$$anonfun$blockingSendAndReceive$extension$1$$anonfun$apply$1.apply(NetworkClientBlockingOps.scala:115) at kafka.utils.NetworkClientBlockingOps$$anonfun$blockingSendAndReceive$extension$1$$anonfun$apply$1.apply(NetworkClientBlockingOps.scala:112) at scala.Option.foreach(Option.scala:236)
提问:该报错涉及kafka.utils.NetworkClient,推测这是Broker无法识别副本或无法同步副本数据导致的,请问该判断是否正确?
问题分析与结论
你的判断不完全准确。这个报错的核心是副本拉取线程(ReplicaFetcherThread)在向Broker 4发起拉取请求时,连接在收到响应前就断开了——本质是网络层面的连接异常,而非直接的副本识别或数据同步逻辑问题,但这类网络异常会间接引发副本同步失败。
具体可能的诱因包括:
- Broker 4负载过高(CPU、内存或磁盘IO耗尽),无法及时处理请求,导致连接超时断开
- 集群内部网络不稳定,存在丢包、延迟过高,或防火墙/安全组拦截了Broker间的通信端口(默认9092)
- Broker 4的Kafka进程出现假死、频繁重启,导致连接中断
- Kafka 0.10版本本身存在NetworkClient相关的已知稳定性bug(该版本较老旧,网络通信层面问题较多)
若要验证副本识别与同步状态,可以执行以下操作:
- 执行命令
kafka-topics.sh --describe --zookeeper <你的ZK地址> --topic <目标Topic>,查看副本分配与ISR(同步副本)列表,确认Broker 4的副本是否在ISR中 - 检查Broker 4的
server.log,排查是否有进程崩溃、资源耗尽或其他核心异常日志 - 在其他Broker节点上测试与Broker 4的网络连通性,比如使用
telnet <Broker4_IP> 9092或nc -zv <Broker4_IP> 9092
内容的提问来源于stack exchange,提问作者jessica
相关产品推荐
相关产品推荐

