繁体   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