kafka參數:max.poll.interval.ms 和 session.timeout.ms

工作中,經常會給kafka配置以下參數:

request.timeout.ms  60 * 1000 * 4
max.poll.interval.ms 60 * 1000 * 6
session.timeout.ms 60 * 1000 * 3
heartbeat.interval.ms 60 * 1000 * 2
  • session.timeout.ms: 檢查整個消費者死亡超時時間
  • heartbeat.interval.ms: 心跳檢查超時時間,但通常應設置為不高于session.timeout.ms的1/3
  • max.poll.interval.ms: 檢查消費者處理線程死亡
  • request.timeout.ms: 請求超時時間,和上面三個沒有依賴關系

在kafka0.10.1 之前:

  • 檢查整個消費者死亡和檢查消費則處理線程,使用的同一個線程,如果設置的max.poll.interval.ms大于session.timeout.ms,遇到一個處理時間過長的消息,會由于線程忙于處理消息,而無法發(fā)送心跳,導致kafka認為改消費則已完全死亡,進而進行Rebalance
  • 所以推薦設置:heartbeat.inerval.ms < max.poll.interval.ms < session.timeout.ms

在kafka0.10.1之后:

  • session.timeout.ms 和 max.poll.interval.ms 解耦了,拆成了兩個線程,不用再擔心它們之間的依賴關系
  • 推薦設置:heartbeat.interval.ms < session.timeout.ms

參考:Kafka session.timeout.ms heartbeat.interval.ms參數的區(qū)別以及對數據存儲的一些思考

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容