卡夫卡__consumer_offsets的大小不断增长

时间:2018-07-27 12:13:08

标签: apache-kafka kafka-consumer-api spring-kafka

我们将Kafka用作严格排序的队列,因此使用了single topic/single partition/single consumer group组合。我将来应该可以使用多个分区。

我的使用者是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 个答案:

答案 0 :(得分:1)

offsets.retention.minuteslog.retention.XXX属性只会影响偏移记录rolling occurs 的物理删除记录/消息/日志。

通常,offsets.retention.minutes属性规定,如果消费者在指定的时间内消失了,经纪人应该忘记您的消费者,并且即使没有从磁盘上删除日志文件,经纪人也可以做到这一点 >。

如果将此值设置为相对较低的值,并在没有活跃使用者的情况下检查__consumer_offsets主题,随着时间的流逝,您会发现类似以下内容:

    [group,topic,7]::OffsetAndMetadata(offset=7, leaderEpoch=Optional.empty, metadata=, commitTimestamp=1557475923142, expireTimestamp=None)
    [group,topic,8]::OffsetAndMetadata(offset=6, leaderEpoch=Optional.empty, metadata=, commitTimestamp=1557475923142, expireTimestamp=None)
    [group,topic,6]::OffsetAndMetadata(offset=7, leaderEpoch=Optional.empty, metadata=, commitTimestamp=1557475923142, expireTimestamp=None)
    [group,topic,19]::NULL
    [group,topic,5]::NULL
    [group,topic,22]::NULL

这表示事件存储系统(例如Kafka)通常如何工作。他们记录新事件,而不是更改现有事件。

我不知道默认情况下每60分钟会删除/清理主题的任何Kafka版本,并且我感觉您对文档中的内容有误解。

__consumer_offsets的管理方式似乎与常规主题大不相同。删除__consumer_offsets的唯一方法是强制滚动其文件。但是,这与常规日志文件不同。尽管常规日志文件(针对您的数据主题)在每次删除时都会自动滚动,无论log.roll.属性如何,__consumer_offsets都不会这样做。而且,如果它们没有滚动并停留在初始...00000段,则它们根本不会被删除。因此,减少__consumer_offsets文件的方法似乎是:

  1. 设置相对较小的log.roll.;
  2. 如果您有能力断开与消费者的联系,请操纵offsets.retention.minutes
  3. 否则调整log.retention.XXX属性。

答案 1 :(得分:0)

  1. 更改offset.retention.minutes将无济于事。这将为不活动的组释放偏移量所使用的空间。假设您没有太多不活动的组ID,则不需要它。

  2. 将log.retention.bytes配置更改为offsets主题,然后根据需要将其设置为较低的值。您可以使用Kafka-config.sh或您知道的其他方式更改此配置。

一旦您限制了主题大小,当主题大小达到阈值并为您清理时,kafka压缩就会开始。