-
启动失败(Failed to start / 反复重启 / systemctl 报 start-limit)
典型根因:ExecStart 路径错误、脚本不可执行、JVM 无法分配内存、配置错误导致进程立即退出。
处理建议:
- 检查 unit 的 ExecStart 是否指向正确的 kafka-server-start.sh;确认脚本具备可执行权限。
- 前台启动观察首条异常;若见 “Cannot allocate memory”,适当降低 KAFKA_HEAP_OPTS(如 -Xmx2G -Xms2G)。
- 修正 server.properties 中明显错误(如 log.dirs 不存在、权限不足、端口冲突),再重启。
-
Zookeeper 连接或元数据超时
典型根因:Zookeeper 未启动/连接串错误、网络不通、防火墙/安全组阻断。
处理建议:
- 确认 systemctl status zookeeper 正常;核对 zookeeper.connect=host:2181。
- 测试 2181 端口连通性;排查 firewalld/iptables 策略。
- 客户端报 TimeoutException: Topic … not present in metadata after 60000 ms 时,优先检查 Broker 是否真正在对应 9092 端口监听、网络是否可达、Zookeeper 是否健康。
-
监听地址与主机名解析导致不可用(含 LEADER_NOT_AVAILABLE)
典型根因:listeners 与 advertised.listeners 配置不当,或 /etc/hosts 将主机名解析到 127.0.0.1,跨主机/外部客户端无法连接。
处理建议:
- 明确配置:例如 listeners=PLAINTEXT://0.0.0.0:9092,advertised.listeners=PLAINTEXT://<本机内网IP>:9092;确保客户端以此 IP 连接。
- 修正 hosts:避免 127.0.0.1 行包含本机主机名;跨平台访问时,客户端需能解析 Broker 主机名或使用 IP。
-
端口冲突与资源限制
典型根因:已有进程占用 9092,或系统资源(内存、文件句柄)不足。
处理建议:
- 用 netstat -tulpen | grep 9092 找到占用进程并释放/更换端口;必要时调整 server.properties 的 listeners 端口。
- 检查 ulimit -n(文件句柄)与内存;Kafka 为内存/IO 密集型,资源不足会导致不稳定或启动失败。