Kafka 故障排查 Ubuntu 上怎么办
导读:Ubuntu 上 Kafka 故障排查实操手册 一 快速定位流程 服务状态与日志 查看 Broker 状态:sudo systemctl status kafka;异常时优先看日志:tail -f /var/log/kafka/serv...
Ubuntu 上 Kafka 故障排查实操手册
一 快速定位流程
- 服务状态与日志
- 查看 Broker 状态:sudo systemctl status kafka;异常时优先看日志:tail -f /var/log/kafka/server.log(日志路径以实际安装为准)。
- 配置核对
- 重点项:broker.id(集群内唯一)、listeners/advertised.listeners(对外可达地址)、zookeeper.connect(或 KRaft 相关配置)、log.dirs(数据目录)。
- 网络连通
- 端口与连通性:telnet < broker_ip> 9092、telnet < zk_ip> 2181;跨机访问需确认路由与安全组。
- 资源与系统限制
- 资源:top/htop 观察 CPU/内存/IO;系统:ulimit -n 检查文件描述符;磁盘:df -h 与 du -sh /var/lib/kafka(或配置的 log.dirs)排查空间。
- 最小化连通性验证
- 创建/列出 Topic:
- Zookeeper 模式:bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
- KRaft 模式:bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test
- 收发消息:
- 生产:bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test
- 消费:bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
- 创建/列出 Topic:
- Docker 场景
- 容器状态:docker ps -a;进入容器:docker exec -it kafka /bin/sh;在容器内用上述脚本验证。
以上步骤覆盖了 Ubuntu 上最常见的 Kafka 故障定位路径,可快速判断是配置、网络、资源还是应用侧问题。
- 容器状态:docker ps -a;进入容器:docker exec -it kafka /bin/sh;在容器内用上述脚本验证。
二 常见故障与修复要点
| 症状 | 快速检查 | 修复建议 |
|---|---|---|
| 服务起不来或反复重启 | 查看 server.log;核对 server.properties 语法与关键项 | 修正配置(如 listeners/advertised.listeners、zookeeper.connect 或 KRaft 配置);端口冲突则更换端口或停用占用进程 |
| 无法创建 Topic,提示 “Replication factor: 1 larger than available brokers: 0” | 检查 Broker 是否在运行;确认 zookeeper.connect 地址 | 启动 Broker;使用正确的 ZooKeeper 连接串 |
| 端口占用 “Address already in use” | **netstat -tulpen | grep 9092** 或 lsof -i:9092 |
| 客户端连不上或超时 | telnet 9092;跨机访问检查 ufw/安全组 | 开放 9092/2181;核对 advertised.listeners 为客户端可达地址 |
| 大量 “Too many open files” | ulimit -n;系统限制与进程限制 | 提升 nofile(如 /etc/security/limits.d/99-nofile.conf 设为 65536 或更高),并配置 systemd 服务默认限制 |
| 磁盘写满 | df -h;du -sh $KAFKA_LOG_DIRS | 清理过期日志或扩容磁盘;调整 log.retention.hours / log.retention.bytes |
| 消息延迟高或抖动 | ping 延迟;客户端 producer.buffer.memory / linger.ms / batch.size;Broker/网络 IO | 优化生产者批量与缓冲;排查网络抖动与 GC;必要时扩容分区提升并行 |
| 消息积压 | 消费者 lag;分区数;消费逻辑效率 | 增加分区、优化消费并发与批量;必要时调整再均衡策略 |
| 数据丢失 | 生产者 acks、retries;Broker min.insync.replicas | 设置 acks=all、retries> 0;Broker 端 min.insync.replicas≥2 |
| 消费者重复消费 | 提交 Offset 策略;auto.commit.interval.ms | 处理完成后同步提交;缩短自动提交间隔或改为手动提交 |
| 以上条目覆盖了 Ubuntu 上高频的 Kafka 故障场景与处置要点,可据此逐项核对与修复。 |
三 配置与系统优化关键点
- listeners 与 advertised.listeners
- 对外暴露请使用 advertised.listeners=PLAINTEXT://< 服务器公网或内网IP> :9092;与 listeners 保持一致或明确区分内外网接口,避免客户端解析错误。
- KRaft 模式
- Kafka ≥ 3.6 支持 KRaft(替代 ZooKeeper),部署与排错路径不同,优先确认 process.roles / controller.quorum.voters / listeners 等关键项。
- 资源与文件描述符
- 提升 ulimit -n(如 65536),并在 systemd 服务中设置 LimitNOFILE;为 Broker 配置合理 JVM 堆(如在启动脚本中设置 KAFKA_HEAP_OPTS=“-Xmx4G -Xms4G”,视内存而定)。
- 安全与访问控制
- 生产环境建议启用 SASL/SSL;在客户端配置 security.protocol / sasl.mechanism / ssl.truststore.location 等参数。
- 监控与告警
- 构建对 Broker 热点分区、消费者滞后(lag) 的监控与告警,提前识别吞吐与稳定性风险。
这些优化项能显著降低因配置不当或资源瓶颈引发的故障概率,并提升可运维性与稳定性。
- 构建对 Broker 热点分区、消费者滞后(lag) 的监控与告警,提前识别吞吐与稳定性风险。
四 一键排查命令清单
- 服务与日志
- sudo systemctl status kafka;journalctl -u kafka -f;tail -f /var/log/kafka/server.log
- 端口与进程
- ss -lntp | grep :9092;lsof -i:9092;netstat -tulpen | grep 9092
- 网络连通
- ping < broker_ip> ;telnet < broker_ip> 9092;telnet < zk_ip> 2181
- 资源与磁盘
- top/htop;free -m;df -h;du -sh /var/lib/kafka
- 最小连通验证
- 创建/列出/收发:kafka-topics.sh --create|list|describe、kafka-console-producer.sh、kafka-console-consumer.sh
- Docker 场景
- docker ps -a;docker logs kafka;docker exec -it kafka /bin/sh 以上命令覆盖 Ubuntu 上 Kafka 的常用排查动作,建议按顺序执行以快速收敛问题范围。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Kafka 故障排查 Ubuntu 上怎么办
本文地址: https://pptw.com/jishu/762870.html
