Ubuntu Kafka 配置故障排查手册
一 快速定位流程
sudo systemctl status kafkajournalctl -u kafka -n 100 --no-pager -ftail -f /var/log/kafka/server.logserver.properties 中的 broker.id(集群内唯一)、listeners/advertised.listeners(对外可达地址)、zookeeper.connect(或 KRaft 相关配置)、log.dirs(数据目录权限与空间)。ss -ltnp | grep :9092 或 lsof -i :9092ping <broker_ip>、telnet <broker_ip> 9092 或 nc -vz <broker_ip> 9092free -h、df -h、top/htop、iostat -x 1二 常见故障与修复要点
Active: failed,主进程很快退出。journalctl -u kafka 定位;检查 Type=forking/ExecStart/Restart;必要时设置 SuccessExitStatus;在单元文件里提升 LimitNOFILE=65536;确认脚本确实拉起 Kafka 且未立即退出。server.properties、释放或更改端口、校正 JAVA_HOME、修正目录权限、清理磁盘或扩容 log.dirs。localhost:9092,远程连不通。listeners=PLAINTEXT://0.0.0.0:9092 且 advertised.listeners 为客户端可达的 IP:9092;云主机需放通安全组/防火墙;用 telnet/nc 验证连通。/etc/security/limits.d/99-nofile.conf 设置 nofile 65536+,并在 systemd 单元中 LimitNOFILE=65536;重启会话或系统生效。listeners 端口或释放占用进程。acks、retries、batch.size、linger.ms、compression.type;fetch.min.bytes、max.poll.records、会话超时;三 最小连通性验证脚本
bin/kafka-topics.sh --create --topic test --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1bin/kafka-topics.sh --list --bootstrap-server localhost:9092bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic testbin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginningnc -vz <broker_ip> 9092 或 telnet <broker_ip> 9092四 关键配置与优化建议
listeners=PLAINTEXT://0.0.0.0:9092advertised.listeners=PLAINTEXT://<公网或内网可达IP>:9092nofile ≥ 65536(limits 与 systemd 同时设置)-Xms/-Xmx 一致),推荐 G1GC;为操作系统 Page Cache 留出余量acks=1;强一致用 acks=all 并配置 min.insync.replicas≥2retries>0、enable.idempotence=true五 高频命令速查表
| 目标 | 命令 |
|---|---|
| 服务状态 | sudo systemctl status kafka |
| 查看 systemd 日志 | journalctl -u kafka -n 100 -f |
| 查看 Kafka 日志 | tail -f /var/log/kafka/server.log |
| 端口占用 | `ss -ltnp |
| 连通性测试 | ping <ip>、telnet <ip> 9092、nc -vz <ip> 9092 |
| 资源检查 | free -h、df -h、top/htop、iostat -x 1 |
| Topic 管理 | bin/kafka-topics.sh --list/create --bootstrap-server localhost:9092 |
| 控制台生产/消费 | bin/kafka-console-producer.sh / bin/kafka-console-consumer.sh |
| 文件描述符限制 | ulimit -n;配置于 /etc/security/limits.d/ 与 systemd LimitNOFILE |