kafka broker重启之后只能写不可读的案例

问题现象

最近发现一个问题,Kafka 0.9(含)以上版本Broker在运行长一段时候,经过重启,会有很长一段时间(30min)不能正常对外提供服务。 现象:consumer的OffsetCommit、JoinGroup、LeaveGroup、SyncGroup、Heartbeat等API会一直出现NOT_COORDINATOR_FOR_GROUP(16, new NotCoordinatorForGroupException("This is not the correct coordinator for this group."))(KAFKA ERROR CODE 16, 不同语言的Client可能字符串不大相同,但是错误code一定相同),持续很长时候后(30min)后自动恢复正常。

原因

Kafka 0.9后使用了一个内部topic __consumer_offsets 作为consumer的元数据(group coordinator、commited-offset等)的存储介质,这些元数据0.8时是存储在zookeeper上的。经常长时间的线上运行__consumer_offsets的partition的磁盘占用会持续增大,造成重启时,需要经过很长时间去加载__consumer_offsets内的数据,导致在这段加载时间内,该broker不能正常对外提供服务,造成consumer client持续报错。加载__consumer_offsets的日志在kafka的server.log中。 image001.png

解决:

需要开启log.cleaner功能,删掉过期堆积的log数据。 修改配置文件,重启broker: log.cleaner.enable=true log.cleanup.policy= delete 在0.8版本中的配置文件中的默认值是log.cleaner.enable=false,我们错误地将0.8配置文件中的这项拷贝到0.9的Kafka后造成了以上问题。

相关参考:

https://issues.apache.org/jira/browse/KAFKA-3000 https://issues.apache.org/jira/browse/KAFKA-2988 https://mail-archives.apache.org/mod_mbox/kafka-users/201603.mbox/%3CCAHXdron8fePyDwyk-YnmcSz1zDO9qFDRJgLa1x8rxHwz2PTzow@mail.gmail.com%3E

转载于:https://my.oschina.net/tingting1127723365/blog/917635

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值