kafka消費者參數設置調優

kafka Consumer參數設置

1.session.timeout.ms <= coordinator檢測失敗的時間

  • 默認值是10s
  • 該參數是 Consumer Group 主動檢測 (組內成員comsummer)崩潰的時間間隔。若設置10min,那麼Consumer Group的管理者(group coordinator)可能需要10分鐘才能感受到。太漫長了是吧。

2.max.poll.interval.ms <= 輪詢間隔(處理邏輯最大時間)

  • 這個參數是0.10.1.0版本後新增的,可能很多地方看不到喔。這個參數需要根據實際業務處理時間進行設置,一旦Consumer處理不過來,就會被踢出Consumer Group 。
  • 注意:如果業務平均處理邏輯爲1分鐘,那麼max. poll. interval. ms需要設置稍微大於1分鐘即可,但是session. timeout. ms可以設置小一點(如10s),用於快速檢測Consumer崩潰。

3.auto.offset.reset

  • 該屬性指定了消費者在讀取一個沒有偏移量或者偏移量無效(消費者長時間失效當前的偏移量已經過時並且被刪除了)的分區的情況下,應該作何處理,默認值是latest,也就是從最新記錄讀取數據(消費者啓動之後生成的記錄),另一個值是earliest,意思是在偏移量無效的情況下,消費者從起始位置開始讀取數據。

  • 注意:auto_offset_reset這個參數,只有在一個group第一次運行的時候纔有作用,從第二次運行開始,這個參數就失效了。

4.enable.auto.commit  自動提交位移

  • 對於精確到一次的語義,最好手動提交位移

5.fetch.max.bytes

  • 單次獲取數據的最大消息數。

6.max.poll.records <= 吞吐量

  • 單次poll調用返回的最大消息數,如果處理邏輯很輕量,可以適當提高該值。
  • 一次從kafka中poll出來的數據條數,max.poll.records條數據需要在在session.timeout.ms這個時間內處理完
  • 默認值爲500

  • heartbeat. interval. ms 心跳間隔
  • heartbeat心跳主要用於溝通交流,及時返回請求響應。這個時間間隔真是越快越好。因爲一旦出現reblance,那麼就會將新的分配方案或者通知重新加入group的命令放進心跳響應中。

  • connection. max. idle. ms <= socket連接
  • kafka會定期的關閉空閒Socket連接。默認是9分鐘。如果不在乎這些資源開銷,推薦把這些參數值爲-1,即不關閉這些空閒連接。

  • request. timeout. ms
  • 這個配置控制一次請求響應的最長等待時間。如果在超時時間內未得到響應,kafka要麼重發這條消息,要麼超過重試次數的情況下直接置爲失敗。
  • 消息發送的最長等待時間.需大於session.timeout.ms這個時間

  • fetch.min.bytes
  • server發送到消費端的最小數據,若是不滿足這個數值則會等待直到滿足指定大小。默認爲1表示立即接收。

  • fetch.wait.max.ms
  • 若是不滿足fetch.min.bytes時,等待消費端請求的最長等待時間

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章