kafka分区有很多日志段

时间:2018-09-20 08:59:47

标签: apache-kafka

一个主题有20个分区,几乎每个人都有超过20,000个日志段文件,其中大多数是在几个月前创建的。即使将retention.ms配置为非常短,这些段也不会被删除。而其他主题可以正常回收。

我想知道里面有什么问题,以及如何解决。因为我担心总段数的增加将使其大于操作系统vm.max_map_count的数目,这将损害kafka进程本身。下图是有关异常主题的描述。

enter image description here

1 个答案:

答案 0 :(得分:0)

不确定确切的问题是什么,但要考虑一些事项:

  • 代理与特定于主题的配置。检查以确保您的主题实际上具有您认为具有的配置,并且没有从代理设置中继承它们。

    < / li>
  • retention相关的配置。如Girogos Myrianthous所述,您可以查看log.retention.check.interval.mslog.cleanup.policy。我还将查看与胶卷相关的设置,例如log.roll.hours。我相信,在某些情况下,即使该段旧了,Kafka也不会删除该段,直到其分区滚动。滚动遵循以下行为:

  

日志滚动时间不再取决于日志段创建时间。现在,它现在基于消息中的时间戳。进一步来说。如果段中第一条消息的时间戳为T,则当新消息的时间戳大于或等于T + log.roll.ms(http://kafka.apache.org/20/documentation.html)时,将推出日志。

因此,请务必考虑记录的时间戳,而不仅仅是片段文件的使用期限。

最后:

  • 您使用的是什么版本的Kafka?
  • 您是否仔细查看了经纪人日志?经纪人日志是我解决遇到的所有此类问题的方法。