一、配置文件与路径问题
server.properties等核心配置文件的路径,或在启动Kafka时未通过--config参数指定路径,导致Kafka无法加载配置。listeners用于定义Kafka Broker监听的本地地址和端口,advertised.listeners用于向客户端公布可访问的地址(需包含机房、域名等信息)。若advertised.listeners配置错误(如使用内网IP但客户端从公网访问),会导致客户端无法连接Broker。二、ZooKeeper依赖问题
zookeeper.session.timeout.ms=18000),触发Controller频繁切换,影响集群稳定性。三、内存与资源分配问题
KAFKA_HEAP_OPTS(如-Xmx512M -Xms512M),若堆内存过小,会导致OutOfMemoryError: Java heap space;若过大,会增加Full GC时间,影响性能。log.dirs(消息存储目录)的磁盘空间,若磁盘写满,Broker将停止接收新消息,报错如“No space left on device”。DirectBuffer),若-XX:MaxDirectMemorySize设置过小(默认无限制,但建议根据实际情况调整),会导致OutOfMemoryError: Direct buffer memory。四、Topic与分区配置问题
num.partitions(默认1),导致消费并行度低,无法应对高吞吐量场景(如生产者发送速度快于消费者处理速度,引发消息堆积)。default.replication.factor(默认1)大于集群Broker数量,导致副本无法同步(如3节点集群设置副本因子为4,会报错“Not enough in-sync replicas”);或副本因子过小(如1),无法保证数据高可用(Leader副本宕机后,分区不可用)。五、生产者与消费者配置问题
acks=all(要求所有ISR副本确认后才返回成功),或min.insync.replicas(最小同步副本数)设置过小(如1),当Leader副本宕机且未同步到Follower时,数据会丢失。enable.auto.commit=true,默认开启)且auto.commit.interval.ms(自动提交间隔,默认5秒)过长,若消费者崩溃前未提交Offset,重启后会重复消费已提交的消息;或消费者处理消息时间过长(超过max.poll.interval.ms,默认5分钟),触发重平衡,导致Offset提交失败。session.timeout.ms(心跳超时时间,默认10秒)过小,若消费者处理消息时间过长,无法及时发送心跳,Group Coordinator会认为消费者下线,触发重平衡;或max.poll.records(每次拉取的消息数,默认500)过大,导致单次处理时间过长。六、网络与端口问题
listeners=PLAINTEXT://:9092),若该端口被其他应用(如Nginx、Redis)占用,Broker无法启动,报错如“Address already in use”。firewalld或iptables),未开放Kafka端口(如9092)和ZooKeeper端口(如2181),导致客户端无法连接Broker或Broker无法连接ZooKeeper。七、系统环境问题
UnsupportedClassVersionError。vm.swappiness(swap使用比例,默认60)设置过高,当物理内存不足时,系统会频繁将内存数据交换到swap分区,影响Kafka性能(建议设置为1-10);ulimit -n(文件描述符限制,默认1024)过小,导致Kafka无法处理大量并发连接(建议设置为65535)。