4.4. 优化消费者以实现吞吐量和延迟


控制客户端应用程序调用 KafkaConsumer.poll () 时返回的消息数量。

使用 fetch.max.wait.msfetch.min.bytes 属性来增加由 Kafka 代理使用者获取的最小数据量。基于时间的批处理是使用 fetch.max.wait.ms 和基于 size 的批处理配置,使用 fetch.min.bytes 配置。

如果使用者或代理中的 CPU 使用率很高,则可能是因为来自消费者的请求太多。您可以调整 fetch.max.wait.msfetch.min.bytes 属性,以便请求和消息在较大的批处理中交付较少。通过调整较高情况,可以提高吞吐量,同时将一些成本降低到延迟。如果生成的数据量较低,您也可以调整更高。

例如,如果将 fetch.max.wait.ms 设置为 500ms,则将 fetch.min.bytes 和 fetch.min.bytes 设置为 16384 字节,则当 Kafka 收到来自消费者中获取请求时,它将在达到第一个阈值时响应。

相反,您可以调整 fetch.max.wait.msfetch.min.bytes 属性,以改进端到端延迟。

# ...
fetch.max.wait.ms=500 
1

fetch.min.bytes=16384 
2

# ...
Copy to Clipboard Toggle word wrap
1
在完成获取请求前,代理会等待的最大时间毫秒。默认值为 500 毫秒。
2
如果使用最小批处理大小(以字节为单位),则会在达到最小值时发送请求,或者把消息排队为 than fetch.max.wait.ms (最好是更早的)。添加延迟可让批量批量消息增加到批处理大小。

通过增加 fetch 请求大小来降低延迟

使用 fetch.max.bytesmax.partition.fetch.bytes 属性来增加由 Kafka 代理使用者获取的最大数据量。

fetch.max.bytes 属性设置一次从代理获取的数据量的最大限值(以字节为单位)。

max.partition.fetch.bytes 会以字节为单位设置每个分区返回的最大限制,每个分区必须始终大于代理或主题配置中设置的 max.message.bytes 字节数。

客户端可消耗的最大内存量大约计算为:

NUMBER-OF-BROKERS * fetch.max.bytes and NUMBER-OF-PARTITIONS * max.partition.fetch.bytes
Copy to Clipboard Toggle word wrap

如果内存用量可以容纳,您可以增加这两个属性的值。通过在每个请求中允许更多的数据,延迟会提高,因为获取请求较少。

# ...
fetch.max.bytes=52428800 
1

max.partition.fetch.bytes=1048576 
2

# ...
Copy to Clipboard Toggle word wrap
1
获取请求返回的最大数据量(以字节为单位)。
2
每个分区返回的的最大数据量(以字节为单位)。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat