【问题标题】:Kafka is filling up disk space despite of the retention settings尽管保留设置,Kafka 正在填满磁盘空间
【发布时间】:2020-01-07 18:58:04
【问题描述】:

我们将主题的保留时间定义为 15 分钟。看起来 Kafka 正在按照配置删除消息,但磁盘空间未恢复。 “df -h”输出显示 kafka-logs 为 30G,而不是应该为 1Gb 的实际大小。

{{/usr/sbin/lsof | grep deleted }} 输出显示 kafka-logs 下的一堆文件已被删除,但仍占用空间。

这是一个已知问题吗?是否有可以应用于 kafka 代理服务器的设置?

我们有 Kafka 2.2.0

【问题讨论】:

  • 您是否在代理设置中使用了 log.cleanup.policy = delete ?
  • 我建议在单个分区上做 du,而不是所有日志
  • 你说的 du 是什么意思??
  • Kafka-logs 文件夹位于 /part1 下。当我输入“df -h”时,我看到 /part1 的大小为 29Gb。但是当我输入“du -sch /part1/*”作为检查文件夹大小的命令时,我看到 kafka-logs 文件夹的大小是 1Gb。我的问题与此类似:access.redhat.com/solutions/2316
  • 重新启动我的 kafka 服务解决了这个问题,我在 df 输出和 du 输出中看到的内容变得相同。显然,我无法在生产环境中不断重启我的 kafka 服务,所以我想知道之前是否有人遇到过同样的问题。我的“cleanup.policy”已经设置为“delete”。主题的保留时间设置为 15 分钟。另外,我只有 1 个代理服务器。

标签: apache-kafka


【解决方案1】:

如 Apache Kafka 文档中所述:

 retention.ms: This configuration controls the maximum time we will retain a log before we will discard old log segments to free up space. 
   If we are using the "delete" retention policy. This represents an SLA on how soon consumers must read their data. 
   If set to -1, no time limit is applied. 
Type: longDefault: 604800000
Valid Values: [-1,...]
Server Default Property: log.retention.ms
Importance: medium

它不会删除整个系统的数据,只会删除特定消费者组的数据。

为了删除数据,您必须设置代理级别设置:

log.cleanup.policy: The default cleanup policy for segments beyond the retention window. A comma-separated list of valid policies. 
Valid policies are: "delete" and "compact"
Type: list
Default: delete
Valid Values: [compact, delete]
Importance: medium
Update Mode: cluster-wide

您还可以浏览各种配置的 Kafka 文档:https://kafka.apache.org/documentation/#configuration

【讨论】:

  • 不删除是什么意思?默认策略告诉它
  • 它会在retention.ms过去后删除该特定组的数据。
  • 那你为什么要大胆说它不会呢?
  • 我已经设置了要删除的清理策略。问题是除非我重新启动 kafka,否则删除后磁盘空间不会被清除。
猜你喜欢
  • 2015-06-06
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-27
  • 1970-01-01
  • 2014-09-05
相关资源
最近更新 更多