簡體   English   中英

在 Kafka 消費者配置中將 max.poll.interval.ms 設置為大於 request.timeout.ms 的負面影響是什么

[英]What is negative effects of setting max.poll.interval.ms larger than request.timeout.ms in Kafka consumer configs

根據 Kafka 文檔;

新的 Java Consumer 現在支持來自后台線程的心跳。 有一個新的配置 max.poll.interval.ms 控制消費者主動離開組之前輪詢調用之間的最長時間(默認為 5 分鍾)。 配置 request.timeout.ms 的值必須始終大於 max.poll.interval.ms 因為這是消費者重新平衡時 JoinGroup 請求可以在服務器上阻塞的最長時間,因此我們更改了其默認值到 5 分鍾以上。

但我無法理解使 max.poll.interval.ms 大於 request.timeout.ms 的可能結果。

任何人都可以解釋這部分文件:

因為這是消費者重新平衡時 JoinGroup 請求可以在服務器上阻塞的最長時間

現在我在我的項目中使用這些消費者參數:

kafka.consumer.session.timeout.ms=30000
kafka.consumer.heartbeat.interval.ms=10000
kafka.consumer.request.timeout.ms=31000
kafka.consumer.max.poll.interval.ms=259200000
kafka.consumer.max.partition.fetch.bytes=10242880

這些用法會產生什么負面影響?

注意:我的 kafka-clients 版本是 1.1.0

更新

從 Kafka 2.0.0 版開始,此規則不再有效。 來自 Kafka 文檔 2.0.0 中的顯着變化:

同樣作為 KIP-266 的一部分,request.timeout.ms 的默認值已更改為 30 秒。 先前的值略高於 5 分鍾,以考慮重新平衡所需的最長時間。 現在我們將重新平衡中的 JoinGroup 請求視為一種特殊情況,並使用從 max.poll.interval.ms 派生的值作為請求超時。 所有其他請求類型使用 request.timeout.ms 定義的超時

request.timeout.ms指定消費者等待代理響應的時間。

max.poll.interval.ms用於幾個用例。 它首先指定消費者與代理交互的頻率(以確認它是活着的),但在消費者加入組時也會使用它。 在這種情況下,它指示代理可以花費多長時間來響應加入組請求。

因此,如果max.poll.interval.ms大於request.timeout.ms ,您會看到代理的響應時間可能比消費者等待的時間更長。 所以消費者可以超時請求。

在很多情況下,這兩種配置的默認值都比較好。 不要將它們覆蓋為我在您的問題中看到的大值,您應該首先清楚地確定您想要如何更改默認行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM