我有一个双节点Kafka群集,每个群集分配48 gb磁盘。
server.properties
设置为将日志保留最多48小时或将日志段保留为1 GB。这是:
log.retention.hours=48
log.retention.bytes=1073741824
log.segment.bytes=1073741824
我有一个主题的30个分区。以下是其中一个分区的磁盘使用情况统计信息:
-rw-r--r-- 1 root root 1.9M Apr 14 00:06 00000000000000000000.index
-rw-r--r-- 1 root root 1.0G Apr 14 00:06 00000000000000000000.log
-rw-r--r-- 1 root root 0 Apr 14 00:06 00000000000000000000.timeindex
-rw-r--r-- 1 root root 10M Apr 14 12:43 00000000000001486744.index
-rw-r--r-- 1 root root 73M Apr 14 12:43 00000000000001486744.log
-rw-r--r-- 1 root root 10M Apr 14 00:06 00000000000001486744.timeindex
正如您可以清楚地看到的,我们有一个1 GB的日志段。但根据我的理解,它应该已被删除。此外,自从这些原木由Kafka推出以来已经超过48小时了。想法?
答案 0 :(得分:3)
在您的情况下,您将log.retention.bytes
和log.segment.bytes
设置为相同的值,这意味着始终没有可删除段的候选项,因此不会发生删除操作。
算法是:
size
答案 1 :(得分:0)
回答我自己的问题:
让我们说BusinessDetail detail = new BusinessDetail();
detail.setArguments(bundle);
有24小时的值,而log.retention.hours
和log.retention.bytes
都设置为1 GB。当日志的值达到1 GB(调用此旧日志)时,将创建一个新的日志段(调用此新日志)。然后在创建新日志后24小时删除旧日志。
就我而言,我在发布此问题前约25个小时创建了新日志。我动态地更改了一个主题的retain.ms值(由Zookeeper维护,而不是Kafka集群,因此不需要Kafka重启)到24小时,我的旧日志立即被删除。