Kafka没有向消费者发送足够的信息

lf5gs5x2  于 2021-06-04  发布在  Kafka
关注(0)|答案(1)|浏览(396)

我有一个Kafka主题,3个分区,只有一个消费者与批处理。我在消费端使用spring kafka,并提供以下消费道具:

max.poll.records=10000
fetch.min.bytes=2000000
fetch.max.bytes=15000000
fetch.max.wait.ms=1000
max.poll.interval.ms=300000
auto.offset.reset.config=earliest
idle.event.interval=120000

即使有数千条消息(gbs的数据)在队列中等待,kafka消费者在每次轮询时也会收到大约10条消息(总大小约为1mb)。消费者应获取成批的 fetch.max.bytes (在我的道具中~15mb)或 max.poll.records (我的情况是10000)。有什么问题吗?

xxslljrj

xxslljrj1#

有几种情况可能会导致这种情况,请执行以下更改:
增加 fetch.min.bytes -消费者还可以获取成批的 fetch.min.bytes ,即1.9mb。
增加 fetch.max.wait.ms -poll函数等待 fetch.min.bytes 或者 fetch.max.wait.ms 触发,先发生什么。 fetch.max.wait.ms 在你的配置中是1秒,听起来不错,但是增加它以防出现问题。
增加 max.partition.fetch.bytes -默认值为1mb,它可以减少像您这样的小分区主题的轮询大小(对于单个使用者的3个分区主题,最多限制3mb轮询)。
尝试使用以下值:

fetch.min.bytes=12000000
fetch.max.wait.ms=5000  
max.partition.fetch.bytes=5000000

更深入的解释:
https://www.oreilly.com/library/view/kafka-the-definitive/9781491936153/ch04.html

相关问题