CentOS 上 Kafka 故障排查步骤
一 快速定位流程
systemctl status kafka -l、journalctl -xeu kafka、tail -f /var/log/kafka/server.log。/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties。二 常见故障与修复对照表
| 现象 | 快速检查 | 修复建议 |
|---|---|---|
| 启动失败,提示 Failed to start Kafka Server | journalctl -xeu kafka、tail -f /var/log/kafka/server.log |
1) 确认 Zookeeper 已起:systemctl status zookeeper 且 zookeeper.connect 正确;2) 校验 log.dirs 存在且权限正确:mkdir -p /data/kafka/logs && chown kafka:kafka /data/kafka/logs;3) 检查端口占用:`ss -lntp |
| 启动报错 Cannot allocate memory | `dmesg | tail、free -m、ulimit -a` |
| 无法连接 Broker/发送超时 | telnet <broker_ip> 9092、nc -vz <broker_ip> 9092、lsof -i:9092 |
1) 开放防火墙:firewall-cmd --add-port=9092/tcp --permanent && firewall-cmd --reload;2) 临时排查可 setenforce 0(生产慎用);3) 核对 listeners 与 advertised.listeners 使用可达的 IP/域名;4) 客户端 bootstrap.servers 使用多个 broker 地址提升容错。 |
| 消费者 Rebalance 失败 | 客户端日志出现 “rebalance failed … valid member id” | 1) 检查 group.id、client.id 配置;2) 稳定网络,避免频繁重启;3) 升级客户端版本;4) 必要时重启消费者以重新加入组。 |
| 消息积压/吞吐低 | 监控生产/消费速率、分区数、CPU/IO | 1) 增加消费者实例或提高并发度;2) 合理增加/重分配分区以均衡负载;3) 调整生产端批量参数(如 batch.size、linger.ms、compression.type);4) 优化代码与硬件(SSD、网络)。 |
| 磁盘写满/日志保留异常 | df -h、du -sh /data/kafka、ls -lh /data/kafka/logs |
1) 调整保留策略:log.retention.hours、log.retention.bytes、log.segment.bytes;2) 清理过期数据或扩容磁盘;3) 监控磁盘使用率并告警。 |
| 文件句柄/进程数不足 | ulimit -n、ulimit -u、cat /proc/sys/fs/file-nr |
在 /etc/security/limits.conf 提升 nofile/nproc(如 65536),并重启会话/服务使其生效。 |
三 关键配置文件与参数要点
/etc/security/limits.conf 设置 nofile/nproc 为 65536 或更高;bootstrap.servers 建议配置多个 broker 地址;四 高频命令清单
systemctl status kafka -l、journalctl -xeu kafka、tail -f /var/log/kafka/server.logss -lntp | grep 9092、netstat -tulpen | grep 9092、lsof -i:9092、ps -ef | grep kafkafree -m、df -h、du -sh /data/kafka、dmesg | tailtelnet <ip> 9092、nc -vz <ip> 9092ulimit -a、cat /proc/sys/fs/file-nr五 仍未解决时的建议
server.properties 脱敏片段、命令输出与复现步骤,便于快速定位。