kafka磁盘占用100%问题跟踪

问题背景

kafka版本2.11,kafka集群每个节点挂载5个磁盘,其中有个节点的一磁盘告警,磁盘占用率100%。

单个磁盘只有不到4TB空间,其中两个topic已经分别占用了1TB+的空间。

解决验证

修改数据清理时间,一般就能解决问题

retention.ms=86400

 但是如果是业务批量刷数据,binlog同步到kafka,磁盘很难一下子降下来,减少副本数量和迁移副本也没有作用。如果是业务刷数据导致,要么重新分区,要么重新分配。这次感觉影响不大,什么也没做,静待正常恢复。

可过了一天再看磁盘,占用率还是100%,感觉已经不是业务批量刷数据的问题了。

仔细观察发现几个问题:

  1. 已经设置成只有1个副本,但所在节点的topic磁盘占用只有几十G,kafka-eagle上看到该topic大小也是只有几十G,两者一致;告警的磁盘该topic还是有1TB+,清理策略没有生效,如果清理完应该为0。
  2. 进入到告警磁盘占用最大的两个topic看文件更新时间,其实log文件已经停止了更新,实时数据已经没有写该目录。
  3. 单个节点有5个磁盘,每个磁盘下有32个topic,但每个磁盘因topic不同导致使用率及不均匀,告警的磁盘已经100%,其他磁盘可能不到10%。

进行了两个验证:

  1. 对其中1个topic手动强手删除,消费者也能正常消费,不影响。
  2. 对另外一个topic,重新修改分配策略,将副本重新加上告警的节点,过一两分钟后,清理策略已经生效,该topic的磁盘占用已经下降到不到1G,过一段时间慢慢增加。原因分析:应该是重新加入告警节点后,过期数据已经被过期清理策略清理了,所以topic磁盘使用率迅速下降;另外旧节点重新加入,集群对旧节点做了rebalance,新数据往旧节点同步,磁盘又开始慢慢上升,但不超过主节点的大小(只有几十G)。

 

你可能感兴趣的:(kafka)