一次 kafka 消息堆积问题排查
收到某业务组的小伙伴发来的反馈,具体问题如下: 项目中某 kafka 消息组消费特别慢,有时候在 kafka-manager 控制台看到有些消费者已被踢出消费组。 从服务端日志看到如下信息: 该消费组在短时间内重平衡了 600 多次。 从 cat 查看得知,每条消息处理都会有 4 次数据库的交互,经过一番沟通之后,发现每条消息的处理耗时大概率保持在 200ms 以上。 Kafka 发生重平衡的有以下几种情况: 消费组成员发生变更,有新消费者加入或者离开,或者有消费者崩溃; 消费组订阅的主题数量发生变更; 消费组订阅的分区数发生变更。 在第 2、3 点都没有发生的情况下,那么就是由消费组成员发生了变化导致 Kafka 发生重平衡。 在查看 kafka 客户端日志,发现有很多如下日志: 日志的描述得知,消费者被被剔除的原因是调用 poll() 方法消费耗时太久了,其中有提到 max.poll.interval.ms 和 max.poll.records 两个参数,而且还会导致提交 max.poll.interval.ms 表示消费者处理消息逻辑的最大时间,对于某些业务来说,处理消息可能需要...


