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心跳間隔的時間還是偶爾提示錯誤,后續再細研究下補上來。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM