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時,等待消費端請求的最長等待時間