温馨提示×

ubuntu kafka配置为何卡顿

小樊
47
2026-09-17 18:39:06
栏目: 智能运维

在 Ubuntu 上部署 Kafka 出现卡顿 / 延迟高 / 吞吐上不去,通常不是 Kafka 本身的问题,而是系统配置、磁盘 IO、JVM 或网络引起的。下面按最常见原因给你一个排查清单。


一、磁盘 IO 问题(最常见)

1. 使用了机械盘 / 云盘性能差

Kafka 是顺序写磁盘,但对磁盘吞吐要求很高。

排查:

iostat -x 1

看:

  • %util 是否接近 100%
  • await 是否很高(>10ms 就偏慢)

建议:

  • 使用 SSD / NVMe
  • 云服务器选 高效云盘 / 本地 SSD
  • log.dirs 不要放在 / 根分区

2. log.dirs 配置不合理

❌ 错误示例:

log.dirs=/tmp/kafka-logs

✅ 建议:

log.dirs=/data/kafka/logs

多个磁盘可逗号分隔:

log.dirs=/data1/kafka,/data2/kafka

二、Ubuntu 系统参数未优化(非常关键)

3. 文件描述符限制

Kafka 会打开大量文件。

查看:

ulimit -n

修改:

sudo vim /etc/security/limits.conf
kafka soft nofile 100000
kafka hard nofile 100000

4. vm.swappiness 过高

Kafka 不应使用 swap。

cat /proc/sys/vm/swappiness

建议设为 1:

sudo sysctl -w vm.swappiness=1

永久:

echo "vm.swappiness=1" | sudo tee -a /etc/sysctl.conf

5. 脏页参数不合理

Ubuntu 默认脏页刷新太慢,会导致突发卡顿。

sudo sysctl -w vm.dirty_background_ratio=5
sudo sysctl -w vm.dirty_ratio=10

三、JVM 配置问题

6. 堆内存设置不合理

❌ 堆太大(>8G)会导致 GC 卡顿
✅ 推荐:

export KAFKA_HEAP_OPTS="-Xms4G -Xmx4G"

不要超过物理内存的 50%


7. GC 方式

Kafka 3.x 默认 G1GC 是 OK 的,但老版本可显式指定:

-Xms4G -Xmx4G -XX:+UseG1GC

四、Kafka 自身配置问题

8. num.network.threads / num.io.threads 太低

num.network.threads=8
num.io.threads=16

CPU 核数多就加


9. 副本同步导致卡顿

如果是 3 副本:

  • min.insync.replicas=2
  • acks=all

在磁盘慢时会非常卡

临时测试:

acks=1

10. 分区数太少

单 partition 吞吐有限。

kafka-topics.sh --describe

建议:

  • 单 partition:~10MB/s
  • 高吞吐:分区数 ≈ broker 数 × 磁盘数 × 2~4

五、网络问题

11. 网卡 / 防火墙

ethtool eth0

检查:

  • 千兆还是万兆
  • 是否有丢包

六、快速自测命令

# 生产压测
kafka-producer-perf-test.sh \
--topic test \
--num-records 1000000 \
--record-size 1024 \
--throughput -1 \
--producer-props bootstrap.servers=localhost:9092

# 消费压测
kafka-consumer-perf-test.sh \
--topic test \
--bootstrap-server localhost:9092 \
--messages 1000000

七、最常见“Ubuntu Kafka 卡顿”Top 3

  1. 磁盘 IO 太差(云盘 / HDD)
  2. 没改系统参数(fd / swappiness)
  3. JVM 堆太大导致 GC 卡

如果你愿意,可以贴一下:

  • Kafka 版本
  • server.properties 关键配置
  • iostat / top 输出

我可以直接帮你精确定位是哪一层卡住

0