本篇介绍kafka异常写入大量数据导致磁盘快满时,确认数据无效情况下可以通过修改缩短topic数据保留时长使得数据过期空间快速释放出来。
kafka 磁盘告警
KAFKA 磁盘告警磁盘使用率超过 90% ,登上去查看监控发现之前都是很稳定的,从8号的下午6点突然开始上去的。
查看 topic 确认有大量未消费的消息。
和开发确认确实是8号下午有调整过业务,之前写入在 0.2 MBytes/s ,现在变成了 2 MBytes/s ,增加了 10 倍。但是这个业务的调整不是为了用在今天告警的这个 KAFKA 实例上的,只是受影响了。里面的数据可以不要。
查看topic当前保留时长
先查看当前 topic 的数据保留时长,可以看到为 3600000 毫秒,即 3600秒,即1小时。
需要注意的是,只有在创建 topic 的时候指定的数据保留时长才会显示这个配置。如果没有指定则只会显示一个 Configs: 。
[me@imzcy bin]$ ./kafka-topics.sh --zookeeper 192.168.16.17:2181 --topic imzcy --describe
Topic:imzcy PartitionCount:2 ReplicationFactor:1 Configs:retention.ms=3600000
Topic: imzcy Partition: 0 Leader: 0 Replicas: 0 Isr: 0
Topic: imzcy Partition: 1 Leader: 0 Replicas: 0 Isr: 0
[me@imzcy bin]$ 使用 kafka-topics.sh 工具修改保留时长
不推荐使用 kafka-topics.sh 脚本来修改主题配置,可能会在以后的版本中删除。建议使用 kafka-configs.sh 来实现此功能。
[me@imzcy bin]$ ./kafka-topics.sh --zookeeper 192.168.16.17:2181 --alter --topic imzcy --config retention.ms=600000
WARNING: Altering topic configuration from this script has been deprecated and may be removed in future releases.
Going forward, please use kafka-configs.sh for this functionality
Updated config for topic "imzcy".
[me@imzcy bin]$ 修改完后我们再次查看保留时长,可以看到已经变为600秒了。
[me@imzcy bin]$ ./kafka-topics.sh --zookeeper 192.168.16.17:2181 --topic imzcy --describe
Topic:imzcy PartitionCount:2 ReplicationFactor:1 Configs:retention.ms=600000
Topic: imzcy Partition: 0 Leader: 0 Replicas: 0 Isr: 0
Topic: imzcy Partition: 1 Leader: 0 Replicas: 0 Isr: 0
[me@imzcy bin]$ 使用 kafka-configs.sh 工具修改保留时长
使用 kafka-configs.sh 工具修改保留时长就不会有上面的警告了。
[me@imzcy bin]$ ./kafka-configs.sh --zookeeper 192.168.16.17:2181 --alter --entity-type topics --entity-name imzcy --add-config retention.ms=60000
Completed Updating config for entity: topic 'imzcy'.
[me@imzcy bin]$ 再次查看保留时长已经修改为 60 秒了。
[me@imzcy bin]$ ./kafka-topics.sh --zookeeper 192.168.16.17:2181 --topic imzcy --describe
Topic:imzcy PartitionCount:2 ReplicationFactor:1 Configs:retention.ms=60000
Topic: imzcy Partition: 0 Leader: 0 Replicas: 0 Isr: 0
Topic: imzcy Partition: 1 Leader: 0 Replicas: 0 Isr: 0
[me@imzcy bin]$
本文采用 知识共享署名4.0 国际许可协议进行许可。
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。
如果您的问题未解决,欢迎微信扫描右侧二维码与我联系。