温馨提示×

ubuntu kafka配置怎样调优性能

小樊
35
2026-09-14 17:17:40
栏目: 智能运维

在 Ubuntu 上部署 Kafka 时,性能调优通常涉及操作系统、JVM、Kafka Broker 配置、磁盘与网络几个方面。下面按层级给你一套实用调优思路(以 Kafka 3.x + Ubuntu 20.04/22.04 为例)。


一、操作系统层调优(Ubuntu)

1. 文件描述符限制

Kafka 会打开大量文件和网络连接。

# 查看
ulimit -n

# 修改(永久)
sudo vim /etc/security/limits.conf
* soft nofile 100000
* hard nofile 100000

2. 禁用 swap(非常重要)

swap 会严重拖慢 Kafka。

sudo swapoff -a

永久禁用:

sudo sed -i '/swap/s/^/#/' /etc/fstab

3. 文件系统与挂载参数

建议使用 ext4 或 xfs,并挂载为 noatime:

sudo mount -o remount,noatime /data

/etc/fstab 示例:

/dev/sdb1 /data xfs defaults,noatime 0 0

4. 网络参数调优

sudo vim /etc/sysctl.conf
net.core.somaxconn = 4096
net.core.netdev_max_backlog = 5000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_tw_reuse = 1
sudo sysctl -p

二、磁盘与 RAID 建议

  • 多块磁盘做 JBOD(推荐),而不是 RAID 5/6
  • Kafka 自身有副本机制,不依赖 RAID 冗余
  • 使用 SSD 或高性能 NVMe(高吞吐场景)

server.properties 示例:

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

三、JVM 调优

1. 堆内存

一般规则:

  • Broker:≤ 6GB
  • 不要超过物理内存的 50%
export KAFKA_HEAP_OPTS="-Xms4G -Xmx4G"

2. GC 选择

Kafka 官方推荐 G1GC

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

四、Kafka Broker 核心参数调优

1. 基础性能参数(server.properties

# 网络线程
num.network.threads=8

# IO 线程(通常 = 磁盘数 * 2)
num.io.threads=16

# 单个 socket 缓冲区
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600

2. 日志与刷盘策略(关键)

不要频繁刷盘(依赖 OS page cache):

# 默认即可,不建议改小
log.flush.interval.messages=10000
log.flush.interval.ms=1000

# 更激进吞吐(接受少量风险)
log.flush.scheduler.interval.ms=3000

3. 分区与副本

num.partitions=6
default.replication.factor=3
min.insync.replicas=2

分区数 ≈ 消费者并发数 × 2~3


4. 消息压缩(Producer 侧)

compression.type=snappy
# 或 zstd(CPU 充足时)

五、Producer 性能调优

acks=1
batch.size=64KB
linger.ms=5~20
compression.type=snappy
buffer.memory=64MB

高吞吐示例:

acks=1
batch.size=131072
linger.ms=10

六、Consumer 性能调优

fetch.min.bytes=1MB
fetch.max.wait.ms=500
max.poll.records=500

七、监控与压测

1. 自带压测工具

# 生产
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

2. 监控指标

  • Under Replicated Partitions
  • Request Handler Idle
  • Network Processor Idle
  • Disk IO Wait

八、典型场景建议

场景 建议
高吞吐 大 batch + linger + 多分区
低延迟 acks=1 + 少 linger
强一致 acks=all + min.insync=2
单机压测 关副本、单分区

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

  • Kafka 版本
  • 机器配置(CPU / 内存 / 磁盘)
  • 使用场景(日志 / 业务消息 / 流处理)

我可以直接帮你给一份可直接用的 server.properties 配置

0