一个主题有20个分区,几乎每个人都有超过20,000个日志段文件,其中大多数是在几个月前创建的。即使将retention.ms
配置为非常短,这些段也不会被删除。而其他主题可以正常回收。
我想知道里面有什么问题,以及如何解决。因为我担心总段数的增加将使其大于操作系统vm.max_map_count
的数目,这将损害kafka进程本身。下图是有关异常主题的描述。
答案 0 :(得分:0)
不确定确切的问题是什么,但要考虑一些事项:
代理与特定于主题的配置。检查以确保您的主题实际上具有您认为具有的配置,并且没有从代理设置中继承它们。
< / li> 与retention
相关的配置。如Girogos Myrianthous所述,您可以查看log.retention.check.interval.ms
和log.cleanup.policy
。我还将查看与胶卷相关的设置,例如log.roll.hours
。我相信,在某些情况下,即使该段旧了,Kafka也不会删除该段,直到其分区滚动。滚动遵循以下行为:
日志滚动时间不再取决于日志段创建时间。现在,它现在基于消息中的时间戳。进一步来说。如果段中第一条消息的时间戳为T,则当新消息的时间戳大于或等于T + log.roll.ms(http://kafka.apache.org/20/documentation.html)时,将推出日志。
因此,请务必考虑记录的时间戳,而不仅仅是片段文件的使用期限。
最后: