Nic*_*ick 2 apache-kafka kafka-consumer-api
I\xc2\xa0 有一个主题,价值 1 GB 消息。A. Kafka 消费者决定消费这些消息。我该怎么做才能禁止消费者一次消费所有消息?我尝试设置
\n\nfetch.max.bytes
在经纪人上
更改为 30 MB,以便每次轮询中仅允许 30 MB 的消息。代理似乎不尊重这一点,并尝试立即向消费者提供所有消息,导致消费者内存不足错误。我该如何解决这个问题?
\nKafka 配置可能相当庞大。通常在 Kafka 中,多个配置可以协同工作来实现结果。这带来了灵活性,但灵活性是有代价的。
来自以下文档fetch.max.bytes
:
记录由消费者批量获取,如果获取的第一个非空分区中的第一个记录批次大于该值,仍然会返回该记录批次以确保消费者能够取得进展。
仅在消费者方面,需要考虑更多配置来限制消费者内存使用,包括:
max.poll.records
:限制单次调用 poll 检索的记录数。默认值为 500。max.partition.fetch.bytes
:限制每个分区获取的字节数。这应该不是问题,因为默认值为 1MB。根据KIP-81中的信息,实际的内存使用情况应该类似于min(num brokers * max.fetch.bytes, max.partition.fetch.bytes * num_partitions)
。
另外,在同一个 KIP 中:
消费者(Fetcher)延迟解压,直到记录返回给用户,但由于 max.poll.records,它最终可能会保留单个分区的解压数据进行几次迭代。
我建议您也调整这些参数,希望这能让您进入所需的状态。
归档时间: |
|
查看次数: |
8270 次 |
最近记录: |