温馨提示×

debian kafka宕机咋排查

小樊
44
2026-09-22 02:44:19
栏目: 智能运维

在 Debian 上排查 Kafka 宕机,一般按「系统 → 服务 → Kafka 日志 → 依赖组件 → 配置/资源」的顺序来。下面是一套比较实用的排查思路。


一、先确认 Kafka 是否真的“宕机”

systemctl status kafka
# 或
ps -ef | grep kafka

看进程是否存在、状态是 active 还是 failed

如果服务起不来:

journalctl -u kafka -n 200 --no-pager

二、看 Kafka 自身日志(最关键)

Kafka 日志一般在:

/var/log/kafka/
# 或
/opt/kafka/logs/

重点看:

  • server.log
  • controller.log
  • state-change.log

常见关键词:

  • OutOfMemoryError
  • Connection refused
  • NoRouteToHost
  • Zookeeper session expired
  • Disk error
  • Broker failed to start

三、检查依赖:ZooKeeper / KRaft

如果是 ZooKeeper 模式

systemctl status zookeeper

Kafka 启动依赖 ZK:

  • ZK 没起 → Kafka 起不来
  • ZK 连接超时 → Kafka 崩溃或反复重启

看 Kafka 日志里有没有:

java.net.ConnectException: Connection refused (zookeeper)

四、检查端口与网络

Kafka 默认端口:

  • 9092(客户端)
  • 2181(ZK,老版本)
ss -lntp | grep 9092
ss -lntp | grep 2181

防火墙检查:

iptables -L -n
# 或
ufw status

五、磁盘 / inode / 权限问题(很常见)

Kafka 对磁盘非常敏感。

磁盘空间

df -h

inode

df -i

日志目录权限

ls -ld /var/lib/kafka /tmp/kafka-logs

Kafka 用户(如 kafka)必须有写权限。


六、内存 / JVM 问题

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
    • listeners
    • advertised.listeners
    • log.dirs
    • zookeeper.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

十、常见宕机原因总结

  1. ZooKeeper 挂了
  2. 磁盘满了
  3. JVM OOM
  4. log.dirs 权限不对
  5. advertised.listeners 配错
  6. 系统重启后服务没自启
  7. 网络中断 / 防火墙

如果你愿意,可以把下面信息发我,我可以更精确地判断:

  • Kafka 版本
  • 错误日志(server.log 最后 50 行)
  • systemctl status kafka 输出
  • 是 ZK 模式还是 KRaft 模式

我可以直接帮你定位到具体原因。

0