Debian系统下Kafka故障排查可按以下步骤进行:
-
检查服务状态
- 使用
sudo systemctl status kafka和sudo systemctl status zookeeper确认服务是否运行。 - 若服务停止,尝试重启:
sudo systemctl restart kafka。
- 使用
-
查看日志文件
- 日志位于
/var/log/kafka/目录,重点查看server.log,搜索ERROR或WARN关键词。 - 检查ZooKeeper日志(若有独立部署),定位连接异常等问题。
- 日志位于
-
验证配置文件
- 检查
/etc/kafka/server.properties,确保listeners、advertised.listeners、zookeeper.connect等配置正确。 - 确认
log.dirs指向的磁盘空间充足,避免因磁盘不足导致故障。
- 检查
-
监控系统资源
- 使用
top、htop查看CPU、内存占用,df -h检查磁盘空间,iostat监控磁盘I/O。 - 若磁盘I/O过高,考虑更换为SSD或调整
log.flush.interval.messages参数。
- 使用
-
网络连通性测试
- 使用
ping、telnet或nc测试Kafka节点间及客户端的网络连接,确保端口(默认9092)可达。 - 检查防火墙规则,确保允许Kafka所需端口通过。
- 使用
-
JMX指标监控
- 通过JMX工具(如
cmdline-jmxclient)获取UnderReplicatedPartitions(未复制分区数)、RequestHandlerIdlePercent等指标,判断集群健康状态。 - 若
UnderReplicatedPartitions持续大于0,可能存在网络分区或副本同步问题。
- 通过JMX工具(如
-
高级诊断工具
- 线程转储:使用
jstack分析线程阻塞情况,查找BLOCKED状态的线程。 - 堆转储分析:通过
jmap生成堆转储文件,用MAT工具排查内存泄漏。 - 网络抓包:使用
tcpdump抓取Kafka端口的网络包,分析通信异常。
- 线程转储:使用
-
版本与兼容性
- 确认Kafka与ZooKeeper、JDK版本兼容,可尝试升级或回退版本。
参考来源:[1,2,3,4,5,6,7,8,9,10,11]