Kafka 在 Linux 上的故障排查指南
一 快速定位流程
二 常见故障与修复要点
| 症状 | 关键检查 | 修复建议 |
|---|---|---|
| 服务启动后立即退出(Active: failed) | systemctl 显示 ExecStart 脚本返回 0,但主进程以 status=1 退出 | 核对 Type=forking、PIDFile、SuccessExitStatus;前台手动运行脚本确认异常;必要时在单元文件补充 SuccessExitStatus=0 143 |
| 端口 9092 被占用 | netstat/lsof 查看占用进程 | 结束冲突进程或修改 listeners 端口;确保防火墙放行 |
| 无法连接 ZooKeeper | server.properties 的 zookeeper.connect;ZK 服务状态 | 启动 ZK;校对连接串与网络;避免 ZK 会话超时导致频繁切换 |
| log.dirs 不存在或权限不足 | 目录存在性、属主与权限 | 创建目录并赋权:mkdir -p /var/lib/kafka && chown kafka:kafka /var/lib/kafka |
| 磁盘写满 | df -h;Kafka 日志保留策略 | 缩短 log.retention.hours、限制 log.retention.bytes;紧急清理过期段 |
| Java 版本不兼容 | java -version;启动日志 | 升级至 Java 11+(Kafka 3.x),并设置 JAVA_HOME |
| 消费者无法消费 | 消费者组、订阅主题与分区、权限 | 校对 group.id、topic 存在与分区数;检查 ACL 与网络 |
| 生产者发送失败 | 目标 topic、分区可用性、ack 配置 | 确认 topic 存在且分区可写;按需设置 acks=all、retries |
| 频繁重平衡 | session.timeout.ms、max.poll.interval.ms、处理耗时 | 适度增大超时;优化消费逻辑,减少单次处理时长 |
| 副本不同步或 ISR 缩减 | 副本数、Broker 负载、网络 | 调整 min.insync.replicas、分区与副本分布;排查网络与磁盘 IO |
三 systemd 单元与脚本的正确配置
四 性能与稳定性优化
五 一键排查命令清单