我们使用kafka作为严格有序的队列,因此 single topic/single partition/single consumer group
combo正在使用中。以后我应该可以使用多个分区了。
我的消费者是 spring-boot
应用程序侦听器,从同一主题生成和使用。所以消费者群体是固定的,总是有一个消费者。 Kafka version 0.10.1.1
在这种情况下 topic-0
还有一些 __consumer_offsets_XX
生长。事实上 __consumer_offsets_XX
增长非常高,即使它应该每60分钟定期清除一次(默认情况下)。消费者并不是一直在阅读,但它已经阅读了 auto.commit.enabled=true
默认情况下, log.retention.minutes
(默认7天)> offset.retention.minutes
(默认为1天);但在我的情况下,由于我的消费者群体/消费者是固定的和单一的;把这些信息藏起来可能没有任何意义 topic-0
一旦被消耗。要我做些什么吗 log.retention.minutes
最短3天?
我能做这个吗 offset.retention.minutes
降低到能够控制增长的大小 __consumer_offsets_XX
不接触 auto.commit
设置?
2条答案
按热度按时间bvjxkvbb1#
更改offset.retention.minutes将无济于事。这是为了释放非活动组的偏移所使用的空间。假设没有太多的非活动组ID,则不需要它。
更改log.retention.bytes config for offsets主题,并根据需要将其设置为较低的值。您可以使用kafka-config.sh或您知道的其他方式更改此配置。
一旦你限制了主题大小,Kafka压缩将在主题大小达到阈值时启动,并为你清理它。
sg24os4d2#
offsets.retention.minutes
以及log.retention.XXX
只有在发生偏移文件滚动时,属性才会影响记录/消息/日志的物理删除。一般来说,
offsets.retention.minutes
属性指示,如果某个使用者在指定的时间内消失,代理应该忘记该使用者,即使不从磁盘中删除日志文件,代理也可以这样做。如果您将此值设置为相对较低的数字并检查
__consumer_offsets
主题虽然没有活跃的消费者,但随着时间的推移,您会注意到如下情况:这意味着事件存储系统,如Kafka,通常是如何工作的。它们记录新的事件,而不是改变现有的事件。
我不知道Kafka的任何版本默认每60分钟删除/清理一次主题,我感觉你误解了文档中的某些内容。
看来
__consumer_offsets
管理的主题与常规主题有很大的不同。唯一的办法__consumer_offsets
删除是为了强制滚动其文件。然而,这种情况与常规日志文件不同。而常规日志文件(用于数据主题)在每次删除时都会自动滚动,而不考虑log.roll.
财产,__consumer_offsets
别那么做。如果它们没有滚动并停留在初始位置...00000
段,它们根本不会被删除。所以,这似乎是减少__consumer_offsets
文件是:设置相对较小
log.roll.
;操纵
offsets.retention.minutes
如果你能负担得起切断你的消费者;否则调整
log.retention.XXX
财产。