kafka消费端异常

公司有个项目在用kafka同步数据,详细背景就不交代了,客户端版本0.9.0.1,自动提交offset,发现程序在kafka拉不到消息时poll每次都提示如下信息及报错:

由于项目环境及代码均在公司内网,详细日志无法贴出来,基本就是:

........................ Marking the coordinator 11111111111 dead.
........................ Error UNKNOWN_MEMBER_ID occurred while committing offsets for group ggggggg
........................ Auto offset commit failed: Commit cannot be completed due to group rebalance
........................ Error UNKNOWN_MEMBER_ID occurred while committing offsets for group ggggggg
........................ Auto offset commit failed:
........................ Attempt to join group gggggggg failed due to unknown member id, resetting and retrying.

翻边网络均没找到有效解释和方案,于是各种参数测试,最终结论:

项目代码如果poll结果为空,则沉睡30s,然后下一次poll,同时kafka消费者设置的心跳间隔时间较小(3s),个人理解为kafka消费端注册的心跳间隔为3s,3s内未有效活动则认为该消费者宕机,当该消费端下一次poll(有效活动)连接时,kafka认为有新消费者加入,于是重新平衡消费群组。(此处有疑问,网上的kafka讲解似乎都是消费者主动发起心跳给kafka(coordinator),但是这里我感觉像是coordinator检测消费者是否在该心跳间隔内有效活动。如有比较清楚的同学,请指点一下,谢谢!)

于是,调整kafka消费者心跳间隔时间大于poll间隔时间(注意poll后业务处理时间),该问题不再出现。

---------------奇怪的是只有把代码中休眠时间降低到2s才正常,其他小于kafka心跳间隔的时间还是偶尔提示错误,后续再细研究下补上来。

转载于:https://www.cnblogs.com/xuechen/p/9266408.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值