在 Debian 上排查 Kafka 宕机,一般按「系统 → 服务 → Kafka 日志 → 依赖组件 → 配置/资源」的顺序来。下面是一套比较实用的排查思路。
systemctl status kafka
# 或
ps -ef | grep kafka
看进程是否存在、状态是 active 还是 failed。
如果服务起不来:
journalctl -u kafka -n 200 --no-pager
Kafka 日志一般在:
/var/log/kafka/
# 或
/opt/kafka/logs/
重点看:
server.logcontroller.logstate-change.log常见关键词:
OutOfMemoryErrorConnection refusedNoRouteToHostZookeeper session expiredDisk errorBroker failed to startsystemctl status zookeeper
Kafka 启动依赖 ZK:
看 Kafka 日志里有没有:
java.net.ConnectException: Connection refused (zookeeper)
Kafka 默认端口:
9092(客户端)2181(ZK,老版本)ss -lntp | grep 9092
ss -lntp | grep 2181
防火墙检查:
iptables -L -n
# 或
ufw status
Kafka 对磁盘非常敏感。
df -h
df -i
ls -ld /var/lib/kafka /tmp/kafka-logs
Kafka 用户(如 kafka)必须有写权限。
Kafka 是 JVM 应用,OOM 很常见。
看:
dmesg | grep -i oom
或 Kafka 日志里:
java.lang.OutOfMemoryError: Java heap space
检查:
cat /opt/kafka/bin/kafka-server-start.sh | grep Xmx
常见调整:
export KAFKA_HEAP_OPTS="-Xmx2G -Xms2G"
重点检查:
server.properties
listenersadvertised.listenerslog.dirszookeeper.connect典型错误:
advertised.listeners 配错 → 客户端连不上,看起来像宕机
Debian 上常见:
ulimit -n
Kafka 建议:
nofile >= 100000
可在:
/etc/security/limits.conf
加:
kafka soft nofile 100000
kafka hard nofile 100000
常用组合:
# 最近系统日志
journalctl -xe -n 200
# Kafka 最后 200 行
tail -n 200 /var/log/kafka/server.log
# 是否 OOM
dmesg | tail -n 50
如果你愿意,可以把下面信息发我,我可以更精确地判断:
server.log 最后 50 行)systemctl status kafka 输出我可以直接帮你定位到具体原因。