Debian Kafka集群故障排查指南
kafka-topics.sh --describe查看分区分布)、第三方工具(如Kafka Manager、Prometheus+Grafana)监控集群状态,关注Topic列表、分区Leader分布、副本同步状态(UnderReplicatedPartitions)、Broker利用率等指标,快速定位异常维度。/var/log/kafka/或/opt/kafka/logs)是排查故障的核心,通过tail -f实时查看server.log中的ERROR、WARN信息(如端口冲突、ZooKeeper连接失败、磁盘空间不足);同时检查系统日志(journalctl -u kafka或/var/log/syslog)中的系统级错误(如OOM Killer终止进程)。systemctl status kafka确认Kafka服务是否运行,若未运行则尝试systemctl start kafka启动,并观察启动日志中的错误信息。zkCli.sh -server <zookeeper_ip>:2181进入ZooKeeper shell,执行ls /brokers/ids查看已连接的Broker列表,若Broker未注册则检查server.properties中的zookeeper.connect配置(确保IP、端口正确)及ZooKeeper集群健康状态。netstat -tuln | grep <port>(如9092、2181)或ss -tuln检查Kafka监听端口是否被占用;使用ping <broker_ip>、telnet <broker_ip> <port>测试Broker间及客户端与Broker的网络连通性,解决网络延迟或防火墙拦截问题。top、htop查看CPU使用率(若接近100%可能导致处理延迟);free -h查看内存使用情况(若剩余内存不足会触发频繁GC);df -h查看磁盘空间(若log.dirs所在分区剩余空间不足10%,Kafka会停止写入);iostat -x 1查看磁盘I/O(若await时间过长说明磁盘性能瓶颈)。server.properties中的关键配置项:broker.id(集群内唯一,若重复需修改并重启)、log.dirs(磁盘空间充足,路径存在且可写)、zookeeper.connect(格式正确,如zk1:2181,zk2:2181,zk3:2181);若配置修改后启动失败,查看日志中的Configuration error提示调整。lsof -i :<port>找到占用进程,终止该进程(kill -9 <pid>)或修改Kafka配置中的端口。InconsistentClusterIdException),清理ZooKeeper中/cluster/id节点的旧数据并重启Broker。log.dirs目录下的旧数据(如删除超过保留期限的日志段,通过log.retention.hours配置),或扩展磁盘空间。kafka-console-producer.sh --bootstrap-server <broker_ip>:9092 --topic <topic_name>测试生产,若失败查看Producer日志中的TimeoutException(网络问题)、NotEnoughReplicasException(副本同步不足,调整acks配置为all);若消息积压,增加Producer并发(num.producers)或调整批处理大小(batch.size)。kafka-console-consumer.sh --bootstrap-server <broker_ip>:9092 --topic <topic_name> --from-beginning测试消费,若延迟高,增加消费者并行度(num.consumer.fetchers、fetch.max.bytes)、调整fetch.max.wait.ms(减少拉取间隔);若消费者组偏移量未提交,检查enable.auto.commit(设为true)及auto.commit.interval.ms(调整提交频率)。log.dirs配置为多个磁盘路径(如/data1/kafka,/data2/kafka),分散I/O负载;优化日志清理策略(log.cleanup.policy=delete、log.retention.hours=168、log.segment.bytes=1G),减少磁盘扫描时间。iftop、nethogs监控网络流量,若带宽占用过高,启用消息压缩(compression.type=snappy或lz4,减少传输数据量);增加Broker数量分散网络负载;优化TCP参数(net.core.somaxconn=1024、net.ipv4.tcp_max_syn_backlog=8192),提升网络吞吐量。KAFKA_HEAP_OPTS="-Xmx4G -Xms4G",避免过大导致GC停顿);优化GC参数(KAFKA_OPTS="-XX:+UseG1GC -XX:MaxGCPauseMillis=20",减少GC时间);增加buffer.memory(生产者缓冲区,如33554432)和fetch.min.bytes(消费者拉取最小字节数,如1024),提高内存利用率。num.network.threads(网络线程,默认3,高并发场景可增至8)、num.io.threads(I/O线程,默认8,磁盘I/O密集型场景可增至16),提升并行处理能力;优化分区数(num.partitions,根据吞吐量需求调整,如每秒10万条消息可设置100个分区),提高并行处理效率。