1.Error UNKNOWN_MEMBER_ID occurred while committing offsets for group *
昨天遇到kafka的消费端报错如下:
2017-06-21 10:55:32,032 [messageListenerContainer_batteryGroupAlarm-C-1] ERROR org.apache.kafka.clients.consumer.internals.ConsumerCoordinator$OffsetCommitResponseHandler.handle(ConsumerCoordinator.java:544) - Error UNKNOWN_MEMBER_ID occurred while committing offsets for group 0
大概意思就是我这个消费者在提交offset的时候,出现了个异常。
分析原因:
- 消息过大,消费过程过长,在session time out这段时间内,没有处理完成,导致心跳检测信号没发出来,这时候,consumers的协调器coordinator 就会认为,这个消费者挂掉了,所以,消费者的offset提交失败,这时候,所有的consumers进行reblance过程(partition要在consumer中重新分配),由于之前消费了的消息,进行了partitiion的重新分配,又要重新被消费,可能会进入一个恶性循环。
策略:
1,更改
session.timeout.ms
的值,加大消费时间;
2,调高心跳检测heartbeat.interval.ms
的值
3,如果使用了spring-kafka,则可以更改enable.auto.commit=false
,使用spring-kafka的提交策略。
4,最有效的方法,提搞partition的个数,增加消费水平
。