在 Debian 下排查 Kafka 问题,通常可以从 系统环境、Kafka 自身日志、配置、依赖(Zookeeper / 网络)、资源 几个层面入手。下面给你一套比较实用的排错思路。
Kafka 依赖 Java:
java -version
推荐:
如果没装:
sudo apt update
sudo apt install openjdk-11-jdk
ps -ef | grep kafka
或(用 systemd 的话):
systemctl status kafka
如果没起来,看失败原因。
默认在:
/var/log/kafka/
或你配置的:
log.dirs=/data/kafka-logs
常见日志文件:
server.logcontroller.logstate-change.log实时看:
tail -f /var/log/kafka/server.log
Address already in use
检查:
ss -lntp | grep 9092
Connection to Zookeeper timed out
确认 Zookeeper 状态:
systemctl status zookeeper
测试连接:
zkCli.sh -server localhost:2181
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://你的IP:9092
zookeeper.connect=localhost:2181
log.dirs=/data/kafka-logs
⚠️ 常见问题:
advertised.listeners 写了 localhost,但客户端在别的机器log.dirs 目录不存在或没权限ls -ld /data/kafka-logs
修复:
sudo chown -R kafka:kafka /data/kafka-logs
telnet 服务器IP 9092
或:
nc -vz 服务器IP 9092
sudo ufw status
放开:
sudo ufw allow 9092
kafka-topics.sh \
--create \
--topic test \
--bootstrap-server localhost:9092 \
--partitions 1 \
--replication-factor 1
kafka-topics.sh --list --bootstrap-server localhost:9092
kafka-console-producer.sh \
--topic test \
--bootstrap-server localhost:9092
kafka-console-consumer.sh \
--topic test \
--from-beginning \
--bootstrap-server localhost:9092
df -h
Kafka 对磁盘很敏感,满了会直接不可用。
free -h
Kafka 堆内存配置在:
/etc/kafka/heap.options
或启动脚本里:
KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
如果是 KRaft 模式:
kafka-storage.sh format \
--config /etc/kafka/server.properties \
--cluster-id xxx
检查:
systemctl status kafka
日志重点看:
QuorumControllerMetadata log| 现象 | 可能原因 |
|---|---|
| 启动秒退 | 配置错误 / 端口占用 |
| 连不上 | advertised.listeners 错 |
| topic 创建失败 | Zookeeper / 磁盘权限 |
| 消费者收不到 | offset / 分组问题 |
| 性能差 | 磁盘 IO / 分区数少 |
如果你愿意,可以把 具体报错日志 或 server.properties 贴出来,我可以直接帮你定位。