调试 Linux 上的 Kafka,通常可以从 服务状态、日志、配置、网络、客户端、系统资源 几个层面入手。下面给你一套比较系统的调试思路,适合新手和常见问题排查。
ps -ef | grep kafka
或
jps
应至少看到:
KafkaQuorumPeerMain(如果用 ZooKeeper)netstat -tulnp | grep 9092
# 或
ss -lntp | grep 9092
默认在:
$KAFKA_HOME/logs/
常见文件:
server.log ✅(最重要)controller.logstate-change.log实时查看:
tail -f server.log
java.net.BindException → 端口被占用java.io.IOException: No such file or directory → 数据目录问题Broker may not be available → 服务未启动或地址错误vim $KAFKA_HOME/config/server.properties
重点检查:
broker.id=0
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://<服务器IP>:9092
log.dirs=/data/kafka-logs
zookeeper.connect=localhost:2181
⚠ 常见坑
advertised.listeners 没配或配成 localhostbroker.id 重复kafka-topics.sh \
--bootstrap-server localhost:9092 \
--create \
--topic test-topic \
--partitions 1 \
--replication-factor 1
kafka-topics.sh --bootstrap-server localhost:9092 --list
kafka-console-producer.sh \
--bootstrap-server localhost:9092 \
--topic test-topic
kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--topic test-topic \
--from-beginning
✅ 如果能收发消息,说明 Kafka 基本正常
zkServer.sh status
zkCli.sh -server localhost:2181
ls /
Kafka 相关路径:
/brokers/ids
/controller
检查:
advertised.listeners 是否对外可访问iptables -L
# 或
firewall-cmd --list-all
telnet <kafka-ip> 9092
kafka-broker-api-versions.sh --bootstrap-server localhost:9092
kafka-topics.sh --bootstrap-server localhost:9092 --describe
df -h
free -h
top
Kafka 吃内存很厉害,建议:
ps -ef | grep kafka
-Xmx4G -Xms4G
✅ 进程在
✅ 端口监听
✅ server.log 无 ERROR
✅ advertised.listeners 正确
✅ topic 能创建
✅ 生产 / 消费成功
你可以直接贴:
Kafka 版本 + 报错日志 + 使用场景