温馨提示×

ubuntu kafka配置如何优化

小樊
40
2026-08-29 01:22:27
栏目: 智能运维

下面从 Ubuntu 系统 + Kafka 部署 的角度,系统性地给你一份 Kafka 配置优化建议,分为 系统层、JVM 层、Kafka Broker 层、Producer/Consumer 层,适用于 生产环境


一、Ubuntu 系统层优化

1. 文件描述符限制(非常重要)

Kafka 大量使用文件和网络连接。

# 查看当前限制
ulimit -n

# 修改限制
sudo vim /etc/security/limits.conf

添加:

* soft nofile 1000000
* hard nofile 1000000
root soft nofile 1000000
root hard nofile 1000000

并启用 PAM:

sudo vim /etc/pam.d/common-session

添加:

session required pam_limits.so

重启后生效。


2. 禁用 swap(强烈建议)

Kafka 对延迟敏感,swap 会导致 GC 停顿。

sudo swapoff -a

永久禁用:

sudo vim /etc/fstab
# 注释 swap 行

3. 文件系统选择

推荐:

  • ext4(稳定)
  • xfs(高吞吐,推荐)

挂载参数建议:

sudo vim /etc/fstab
/dev/sdb1 /data/kafka xfs defaults,noatime,nodiratime 0 0

4. 磁盘调度策略

cat /sys/block/sda/queue/scheduler

建议:

echo deadline | sudo tee /sys/block/sda/queue/scheduler

二、JVM 优化(Kafka 运行在 JVM 上)

1. 推荐 JVM 版本

  • JDK 11 / JDK 17(LTS)
  • ❌ 不推荐 JDK 8(老版本)
java -version

2. JVM 参数优化

编辑 Kafka 启动脚本:

vim /opt/kafka/bin/kafka-server-start.sh

或设置环境变量:

export KAFKA_HEAP_OPTS="-Xms4G -Xmx4G"
export KAFKA_JVM_PERFORMANCE_OPTS="-XX:+UseG1GC -XX:MaxGCPauseMillis=20"

G1 GC 推荐配置

-Xms4G
-Xmx4G
-XX:+UseG1GC
-XX:MaxGCPauseMillis=20
-XX:+DisableExplicitGC

⚠️ 不要设置 Xmx > 物理内存 50%


三、Kafka Broker 核心配置优化

配置文件:

vim /opt/kafka/config/server.properties

1. 基础优化项(必须)

# broker 唯一 ID
broker.id=1

# 监听地址
listeners=PLAINTEXT://:9092

# 日志目录(多磁盘可提升性能)
log.dirs=/data/kafka-logs

# 默认副本数
default.replication.factor=3

# 最小同步副本(保证数据安全)
min.insync.replicas=2

2. 性能优化项(重点)

网络与线程

num.network.threads=8
num.io.threads=16
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600

日志 & 磁盘

num.partitions=3
log.retention.hours=168
log.segment.bytes=1073741824
log.flush.interval.messages=10000
log.flush.interval.ms=1000

不建议频繁 flush Kafka 依赖 OS page cache,不要强制刷盘。


副本 & ISR

replica.lag.time.max.ms=10000
replica.fetch.max.bytes=1048576

3. 高吞吐推荐配置(示例)

num.network.threads=16
num.io.threads=32
log.retention.hours=72
log.segment.bytes=1G
default.replication.factor=3
min.insync.replicas=2

四、Producer 优化(提升吞吐)

props.put("bootstrap.servers", "localhost:9092");

props.put("acks", "1");          // 0 > 1 > all
props.put("compression.type", "lz4");
props.put("batch.size", 16384);  // 16KB
props.put("linger.ms", 5);
props.put("buffer.memory", 67108864);

推荐组合

  • acks=1
  • compression=lz4
  • linger.ms=5~10

五、Consumer 优化(降低延迟)

props.put("bootstrap.servers", "localhost:9092");

props.put("enable.auto.commit", false);
props.put("fetch.min.bytes", 1024);
props.put("fetch.max.bytes", 52428800);
props.put("max.poll.records", 500);

建议

  • 手动提交 offset
  • 合理控制 max.poll.records

六、监控 & 验证

1. Kafka 内置工具

bin/kafka-run-class.sh kafka.tools.JmxTool

2. 推荐监控方案

  • ✅ Kafka Exporter + Prometheus + Grafana
  • ✅ JMX Exporter

七、典型生产环境参考配置

项目 推荐
CPU 8+ 核
内存 16GB+
磁盘 SSD / NVMe
文件系统 XFS
JVM JDK 11/17 + G1GC
副本 3
min.insync.replicas 2

八、如果你愿意,我可以进一步帮你:

  • ✅ 针对 高吞吐 / 低延迟 / 稳定性 给出定制配置
  • ✅ 分析你当前的 server.properties
  • ✅ 帮你做 Kafka 性能压测方案
  • ✅ 给出 KRaft 模式(无 Zookeeper)优化方案

你可以直接贴出你的 Kafka 版本 + server.properties

0