Kafka __consumer_offsets 占用磁盘空间过大处理
kafka 位移分区清理策略
·
下班后接到线上告警,Kafka 磁盘空间超过 80% ;急需处理;真开心呀
- 首先登录机器查看 Kafka 日志目录,定位到 __consumer_offsets 分区文件占用 71G 数据,历史文件未清除;
原因
- Kafka 中用于保存消费者消费位移的主题 __consumer_offsets 与普通 topic 在清理策略上不同,使用的就是 Log Compaction 策略。
- Log Compaction 是 kafka 提供的一种整理 offset 数据的方式。Log Compaction 对于有相同 key 的的不同 value 值,只保留最后一个版本。如果应用只关心 key 对应的最新 value 值,可以开启 Kafka 的日志清理功能,Kafka 会定期将相 key 的消息进行合并,只保留最新的 value 值。
清理
- 查看现有的__consumer_offsets清理策略
bin/kafka-configs.sh --zookeeper xxxx:2181 --entity-type topics --entity-name __consumer_offsets --describe
-
查看第一行输出可以看到 cleanup.policy=compact,则说明cleanup.policy是compact
-
__consumer_offsets的确与普通topic在清理策略上不同,也就是参数cleanup.policy上,给__consumer_offsets手动添加了清理策略
bin/kafka-configs.sh --zookeeper xxxx:2181 --entity-type topics --entity-name __consumer_offsets --alter --add-config 'cleanup.policy=delete'
- 添加完后,等了一会磁盘占用就会减少;我的机器最终从 71G 降到 3G。
更多推荐
已为社区贡献3条内容
所有评论(0)