1. 问题现象与紧急处理
当Kafka集群中某个broker节点的磁盘使用率达到100%时,系统会立即表现出以下典型症状:
- 该broker上的分区停止接收新消息
- 生产者客户端开始报错"NOT_ENOUGH_REPLICAS"或"LEADER_NOT_AVAILABLE"
- 消费者组触发重平衡,但部分分区无法消费
- Kafka控制器日志出现"Shutdown broker due to disk error"记录
紧急处理步骤:
- 立即通过
df -h确认磁盘空间情况,定位具体占满的挂载点(通常是/var/lib/kafka) - 临时扩容(如果有云环境支持)或清理日志段文件:
bash复制# 查看各topic磁盘占用 kafka-log-dirs --bootstrap-server localhost:9092 --describe # 删除最老的segment文件(谨慎操作) rm -f /data/kafka-logs/topic-*/00000000000000000000.log - 重启broker服务,观察是否恢复选举
警告:直接删除日志文件可能导致数据丢失,仅限紧急恢复使用。生产环境建议优先通过增加broker或迁移分区解决。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 根因分析与预防机制
2.1 磁盘爆满的五大常见原因
-
日志保留策略失效
log.retention.hours配置过大(默认168小时)log.retention.bytes未设置或过大- 检查点文件
cleaner-offset-checkpoint损坏导致日志无法清理
-
生产者流量突增
- 突发大流量写入超出集群处理能力
- 消息体积异常增大(如未压缩的JSON日志)
-
副本同步滞后
- ISR列表中的副本长时间未同步
unclean.leader.election.enable=false时导致分区不可用
-
监控缺失
- 未设置磁盘使用率报警阈值(建议>85%触发)
- Prometheus等监控系统未采集
kafka_log_log_size指标
