情景:CrateDB节点崩溃,重启后,分片需要进行复制;Kafka消息的消费组消息积压,消费者无法注册到Topic
任务:解决消息积压问题
行动:查看系统日志,显示消费组即将reblance
结果:cosumter.
max.poll.records=500
max.poll.interval.ms=30000
session.timeout.ms=100000
Kafka 发生重平衡的有以下几种情况:
1、消费组成员发生变更,有新消费者加入或者离开,或者有消费者崩溃;
2、消费组订阅的主题数量发生变更;
3、消费组订阅的分区数发生变更。
在第 2、3 点都没有发生的情况下,那么就是由消费组成员发生了变化导致 Kafka 发生重平衡。
本次出现的问题是由于客户端的消息消费逻辑耗时太长,如果生产端出现消息发送增多,消费端每次都拉取了 500 条消息进行消费,这时就很容易导致消费时间过长,如果超过了 max.poll.interval.ms 所设置的时间,就会被消费组所在的 coordinator 剔除掉,从而导致重平衡,Kafka 重平衡过程中是不能消费的,会导致消费组处于类似 stop the world 的状态下,重平衡过程中也不能提交位移,这会导致消息重复消费从而使得消费组的消费速度下降,导致消息堆积。
解决办法:
根据业务逻辑调整 max.poll.records 与 max.poll.interval.ms 之间的平衡点,避免出现消费者被频繁踢出消费组导致重平衡。