Kafka问题(2):Batch containing 5 record(s) expired due to timeout while requesting metadata from broker
记录kafka出现的问题,原因,与对应场景下的解决方案.造成问题方式有很多种,这里只是记录遇到的或已知的,若有遗漏情况欢迎补充由于问题很多出现在生产环境,故敏感信息已屏蔽,不影响问题介绍文章目录环境问题分析原因参考解决思路环境linuxjdk1.8kafka-client 0.10.x.xkafka-server 0.10.x.x问题kafka-Client报错如下2...
·
记录kafka出现的问题,原因,与对应场景下的解决方案.
造成问题方式有很多种,这里只是记录遇到的或已知的,若有遗漏情况欢迎补充
由于问题很多出现在生产环境,故敏感信息已屏蔽,不影响问题介绍
环境
- linux
- jdk1.8
- kafka-client 0.10.x.x
- kafka-server 0.10.x.x
问题
kafka-Client报错如下
2019-10-30 17:03:39.048 [kafka-producer-network-thread | producer-2] ERROR (这里是一些业务自定义信息,设计隐私,不便展示)
com.mym.test.exception.MsgSendFailException: org.apache.kafka.common.errors.TimeoutException: Batch containing 5 record(s) expired due to timeout while requesting metadata from brokers for TOPIC_1
at com.mym.test.produce.Producer10$1.onCompletion(Producer10.java:30)
at org.apache.kafka.clients.producer.internals.RecordBatch.done(RecordBatch.java:109)
at org.apache.kafka.clients.producer.internals.RecordBatch.maybeExpire(RecordBatch.java:155)
at org.apache.kafka.clients.producer.internals.RecordAccumulator.abortExpiredBatches(RecordAccumulator.java:235)
at org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:205)
at org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:134)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.kafka.common.errors.TimeoutException: Batch containing 5 record(s) expired due to timeout while requesting metadata from brokers for TOPIC_1
重点
Caused by: org.apache.kafka.common.errors.TimeoutException: Batch containing 5 record(s) expired due to timeout while requesting metadata from brokers for TOPIC_1
分析原因
从报错信息可知,由于发送时请求kafka的brokers的metadata超时,导致数据被过期处理。即移除发送队列缓冲区(异步发送时),且会回调onComplete方法(如果设置了Callback时),exception传入onComplete方法告知上层给调用方本次数据发送失败。
- 出此报错信息一般是因为kafka集群内部有问题
- 可能是kakfa某个broker"被下线",或者真的下线停了
- 可能kafka集群内部有问题,某个分区leader正在reblance,时间过久
参考解决思路
- 一般kafka集群出了问题短时间自动恢复后,kafka-client也能感知到也能自动恢复。
- 长时间挂掉的话,kafka-client可能也死了,就需要手动干预重启kafka-clien或通过其他干预或检测手段来恢复,一般思路原理就是重建连或手动让旧kafka-client连接再次尝试链接
- 确定kafka-client与kafka-server无网络问题
- zk上查看kafka是否有broker掉线
- 逐一检查kafka的log,看是否有报错或有效信息,一般要多看点日志,kafka集群除了点问题,如果集群够大,可能恢复也要一定时间,这短时间可能仍然无法使用
造成问题方式有很多种,这里只是记录遇到的或已知的,若有遗漏情况欢迎补充
更多推荐
已为社区贡献7条内容
所有评论(0)