僅個人實踐所得,若是有誤,歡迎指出。
一、場景
kafka集群中某一節點(N-10)的CPU利用率大於整個集群的平均水平,且達到報警值。使用top命令后台查看時發現是kafka服務導致CPU利用率高。在kafka界面查看topic,顯示timeout ,使用以下命令查看集群中的topic發現consumer_offsets中有consumer_offsets-5分區的ISR僅剩一個,缺失兩個。
二、分析
1)分析后台kafka日志,沒有報錯或者警告,INFO消息顯示kafka不停的在deleting segement操作;
2)查看consumer_offsets topic中各個分區的offset,發現缺失ISR的consumer_offsets-5分區的offset值遠大於其他分區;
3)查看consumer_offsets topic所在三個broker中對應的consumer_offsets-5分區,發現三個分區的數據時持續更新的;
三、可能的結論
若在分析中3)點,若分區數據不是同步更新,可以通過重啟對應的結點解決。(該方案出自網上,不是我所遇的問題,僅記錄,未驗證);
重點是三個broker上對應分區的數據時相應持續更新的,consumer_offsets-5分區中的offset值遠大於其他分區,說明該分區對應的消費者組的繁忙程度遠大於其他組,通過查看kafka所有分區,發現有較多topic的分區集中在該節點(N-10)中,至此,可以推斷出,有可能是集群的負載不均衡導致的。
對集群中分區進行重分布。