温馨提示×

Linux中Kafka如何停止

小樊
43
2026-08-28 04:41:05
栏目: 智能运维

在 Linux 中停止 Kafka,通常先停 Kafka Broker,再停 Zookeeper(如果还在用)。下面按常见场景给你完整说明。


一、停止 Kafka Broker(最常用)

方式 1:使用 Kafka 自带脚本(推荐 ✅)

进入 Kafka 安装目录:

cd /path/to/kafka

执行:

bin/kafka-server-stop.sh

该脚本会向 Kafka 进程发送 SIGTERM,让 Kafka 优雅关闭。

⚠️ 注意:

  • 如果 kafka-server-stop.sh 没生效,可能是 进程没找到,继续看方式 2。

方式 2:手动 kill(常用)

1️⃣ 查找 Kafka 进程

ps -ef | grep kafka

或:

jps

你会看到类似:

12345 Kafka

2️⃣ 优雅停止(推荐)

kill 12345

或:

kill -15 12345

✅ Kafka 会:

  • 刷写日志
  • 关闭端口
  • 正常退出

3️⃣ 强制停止(不推荐)

kill -9 12345

⚠️ 可能导致:

  • 数据未完全刷盘
  • 下次启动变慢
  • 副本不一致风险

二、停止 Zookeeper(如果使用的是 Zookeeper)

Kafka 2.8+ 可使用 KRaft 模式,不需要 Zookeeper。

方式 1:使用 Zookeeper 脚本

cd /path/to/kafka
bin/zookeeper-server-stop.sh

方式 2:手动停止

ps -ef | grep QuorumPeerMain
kill <pid>

三、使用 systemd 停止(若已配置)

如果 Kafka 是用 systemd 管理的:

sudo systemctl stop kafka
sudo systemctl stop zookeeper

查看状态:

systemctl status kafka

四、确认 Kafka 是否已停止

jps

✅ 正常情况不应再看到 Kafka 进程。

或:

netstat -tunlp | grep 9092

五、停止 Kafka 的正确顺序 ✅

停止 Kafka
↓
停止 Zookeeper

启动顺序相反:

先启动 Zookeeper
↓
再启动 Kafka

六、常见问题

1️⃣ kafka-server-stop.sh 没反应?

  • 可能是 pid 没找到
  • 检查 kafka-server-stop.sh 里的 pid 路径
  • 建议直接用 jps + kill

2️⃣ 生产环境建议

  • ✅ 使用 kill -15
  • ❌ 避免 kill -9
  • ✅ 确保副本同步完成再停

如果你愿意,可以告诉我:

  • Kafka 版本
  • 是否使用 Zookeeper / KRaft
  • 是否是 Docker / systemd / 裸机部署

我可以给你更精确的停止方案

0