解決kafka ISR缺失嚴重導致消費異常的方法
故障現象
-
生產環境flume無法消費kafka,sink的文件爲空。
-
nifi中往kafka寫消息報錯
故障排查
-
元數據主題__consumer_offsets正常
-
對應無法消費的業務topic存在部分分區的ISR列表丟失2/3,且隨着時間的推移,isr缺失的分區佔比在增加
且flume端的消費組一直在rebalance。
嘗試調整參數
kafka.consumer.session.timeout.ms=30000ms
—增大消費者連接GroupCoordinator會話超時時間
flume sink 文件依舊爲空,再次調大此參數依舊沒用,flume的consumerGroup依舊顯示在rebalancing
故障解決方法
因爲之前出現過類似isr缺失的現象,當時增大了此參數
num.replica.fetchers-------leader中進行復制的線程數,增大這個數值會增加relipca的IO
默認是單線程,當時增加到2
但是這次的問題kafka的server.log沒有任何ERROR,能看到的只有nifi生產端的無法生產的ERROR日誌(連接broker失敗),以及flume消費端的大批量INFO日誌(consumer group is rebalancing)
抱着試一試的方式將幾十臺broker中的兩臺num.replica.fetchers參數修改爲4,增大了一倍,然後重啓broker
由於數據量比較龐大,且此broker正在重啓,kafka server.log報錯如下
屬於正常狀況,耐心等待重啓的broker中副本加入到isr中即可
之後發現flume的sink文件大小有所增加,證明開始消費了。
最後滾動重啓所有broker,flume恢復消費,nifi後續生產也不報錯了。
疑問點
-
flume修改參數,消費組日誌信息中爲何依舊提示持續rebalancing?
-
kafka的isr缺失爲何導致nifi生產端鏈接broker失敗?—也許集羣網絡的問題也可能有
kafka的isr同步能力參數見鏈接解決ISR丟失—— Kafka副本同步leader能力參數
遇到類似isr缺失的問題可以嘗試調整這些參數來解決
- 但是這些參數的調整需要與kafka的數據量作對比,現在還沒有一個數據量標準來衡量這些參數設置。