Kafka DeleteRecords请求超时异常问题咨询
Kafka Connect超时异常排查:
deleteRecords(api=METADATA) 超时 错误信息
partition: B3-0 error: org.apache.kafka.common.errors.TimeoutException: Call(callName=deleteRecords(api=METADATA), deadlineMs=1721138713548, tries=721498, nextAllowedTryMs=1721138714452) timed out at 1721138713557 after 721498 attempt(s)
环境配置
- 使用Docker镜像:
confluentinc/cp-kafka-connect:7.6.1 - Maven中Kafka版本配置:
<kafka.version>2.5.1</kafka.version> <kafka-connect.version>2.5.1</kafka-connect.version>
- 已升级ZooKeeper测试依赖版本:
<dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.7.2</version> <scope>test</scope> </dependency>
- 升级了kafka-log4j-appender依赖:
<dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-log4j-appender</artifactId> <version>3.7.0</version> </dependency>
- 完整Kafka相关依赖:
<dependency> <groupId>io.confluent</groupId> <artifactId>kafka-connect-avro-converter</artifactId> <version>7.3.8</version> </dependency> <dependency> <groupId>com.ibm.eventstreams.connect</groupId> <artifactId>kafka-connect-mq-sink</artifactId> <version>${connector.third.party.kafka-connect-mq.version-sink}</version> <type>jar</type> <scope>system</scope> <systemPath>${basedir}/${connector.third.party.jars}/kafka-connect-mq-sink-1.5.2-jar-with-dependencies.jar </systemPath> </dependency> <dependency> <groupId>com.ibm.eventstreams.connect</groupId> <artifactId>kafka-connect-mq-source</artifactId> <version>${connector.third.party.kafka-connect-mq.version-source}</version> <type>jar</type> <scope>system</scope> <systemPath> ${basedir}/${connector.third.party.jars}/kafka-connect-mq-source-1.3.5-jar-with-dependencies.jar </systemPath> </dependency> <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka_2.13</artifactId> <version>${kafka-connect.version}</version> <classifier>test</classifier> <scope>test</scope> <exclusions> <exclusion> <groupId>org.scala-lang</groupId> <artifactId>scala-library</artifactId> </exclusion> <exclusion> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka_2.13</artifactId> <version>${kafka-connect.version}</version> <scope>test</scope> <exclusions> <exclusion> <groupId>org.scala-lang</groupId> <artifactId>scala-library</artifactId> </exclusion> <exclusion> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.7.2</version> <scope>test</scope> </dependency> <dependency> <groupId>org.scala-lang</groupId> <artifactId>scala-library</artifactId> <version>2.13.12</version> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>${kafka.version}</version> <classifier>test</classifier> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.kafka</groupId> <artifactId>connect-runtime</artifactId> <version>${kafka-connect.version}</version> <classifier>test</classifier> <scope>test</scope> </dependency>
排查建议
1. 解决版本冲突问题
- 镜像与依赖版本不匹配:
confluentinc/cp-kafka-connect:7.6.1对应Confluent Platform 7.6.1,底层Kafka版本为3.6.1,但你的Maven配置用的是Kafka 2.5.1,版本差距极大,必然导致客户端API不兼容、通信协议不匹配,引发超时异常。建议将Maven中的kafka.version和kafka-connect.version统一改为3.6.1,同时将kafka-connect-avro-converter版本改为7.6.1(与镜像版本对齐)。 - kafka-log4j-appender版本不兼容:当前使用的3.7.0版本与Kafka 2.5.1不匹配,需改为与Kafka版本一致的3.6.1版本,避免API调用错误。
- 第三方连接器依赖冲突:
kafka-connect-mq-sink和kafka-connect-mq-source使用systemscope引入,其自带的依赖可能包含旧版本Kafka客户端,与当前环境冲突。建议移除systemscope,改用Maven仓库依赖(如果可用),或者解压jar包排查并排除冲突的Kafka依赖。
2. 调整Kafka Connect配置参数
针对元数据请求超时问题,可调整以下配置:
- 增大
request.timeout.ms:延长请求超时时间,默认30000ms,可根据实际情况调整为60000ms或更高。 - 调整
metadata.max.age.ms:缩短元数据刷新间隔,默认300000ms,可改为60000ms,确保客户端及时获取最新的集群元数据。 - 检查
retry.backoff.ms和retry.backoff.max.ms:合理设置重试间隔,避免短时间内大量重试导致资源耗尽。
3. 集群与网络检查
- 确认Kafka Broker集群状态正常:所有Broker节点运行正常,无高负载、OOM等情况,ZK集群状态稳定。
- 检查网络连通性:Kafka Connect容器与Broker、ZK之间网络通畅,无防火墙、路由限制,延迟在合理范围内。
- 查看Broker日志:检查Broker端是否有元数据请求处理缓慢、连接拒绝等日志,定位是否为集群端问题。
内容的提问来源于stack exchange,提问作者skd
相关产品推荐
相关产品推荐

