kafka的一次报错:
情况介绍,报错如下:
Failing OffsetCommit request since the consumer is not part of an active group
Offset commit cannot be completed since the consumer is not part of an active group for auto partition assignment; it is likely that the consumer was kicked out of the group.
- consumer端大量堵塞,一个应用里的两个topic,一个消费正常,一个堵塞,公用同样的配置。
- 重置消费点后,观察offset点并没有从0开始。。诡异。
- topic和consumer端并没有正常的订阅关系,报错里显示consumer已经被踢出组了。
最后经过排查发现结果:
根据分析日志计算时间,单条消息调用消耗的时间是3秒,一次拉取500条记录后,超过了300秒的拉取间隔。导致了consumer端的堆积。
我们调整了参数max.poll.records: 50 后,堵塞症状消除。
后续又跟进了为什么单条调用的时间是3秒,确认拿到kafka消息后,并没有直接发送,而是代码端做了一些处理,导致单条时间为3秒。
最后这3秒导致了上述的消费超时,进而堵塞。
重点总结:
**建议客户端调大max.poll.interval.ms参数,
或者调小max.poll.records参数,
使得一个批次中消息消费时间别超过session.timeout.ms**