温馨提示×

ubuntu kafka参数怎么调

小樊
33
2026-09-20 21:14:32
栏目: 智能运维

在 Ubuntu 上调 Kafka 参数,通常分为系统层面(Linux/Ubuntu)、Kafka 服务端配置、JVM 参数和Topic / 生产者 / 消费者参数几部分。下面按实战角度给你一个比较完整的调优指南。


一、Ubuntu / Linux 系统层参数(很重要)

Kafka 对磁盘、网络、文件句柄敏感。

1. 文件描述符(ulimit)

# 查看
ulimit -n

# 修改(临时)
ulimit -n 100000

# 永久(Ubuntu)
sudo vim /etc/security/limits.conf

添加:

* soft nofile 100000
* hard nofile 100000

2. 禁用 swap(避免 GC 停顿)

sudo swapoff -a

永久禁用可注释 /etc/fstab 中 swap 行。

3. 磁盘调度(SSD 推荐)

cat /sys/block/sdX/queue/scheduler

推荐:noop 或 mq-deadline

4. 网络参数

sudo vim /etc/sysctl.conf
net.core.somaxconn = 4096
net.ipv4.tcp_max_syn_backlog = 8192
vm.swappiness = 1
sudo sysctl -p

二、Kafka 服务端核心参数(server.properties)

路径一般为:

/opt/kafka/config/server.properties

1. 基础性能参数

# 每个节点唯一
broker.id=0

# 监听
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://your-host:9092

# 日志目录(建议多盘)
log.dirs=/data/kafka/logs

# 线程数
num.network.threads=8
num.io.threads=16

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

2. 日志 & 刷盘策略

# 分段大小
log.segment.bytes=1073741824

# 保留时间
log.retention.hours=168

# 刷盘(高吞吐可放宽)
log.flush.interval.messages=10000
log.flush.interval.ms=1000

⚠️ Kafka 依赖 OS page cache,不要频繁刷盘

3. 副本 & 可靠性

default.replication.factor=3
min.insync.replicas=2
unclean.leader.election.enable=false

三、JVM 参数(kafka-server-start.sh / environment)

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

建议:

  • 堆内存 ≤ 物理内存 50%
  • 不要超过 31G(压缩指针)

四、Topic 级别参数

bin/kafka-topics.sh --create \
--topic test \
--partitions 12 \
--replication-factor 3 \
--config retention.ms=604800000 \
--bootstrap-server localhost:9092

常见调优:

  • partitions:CPU 核数 × 2~4
  • min.insync.replicas:2(生产)

五、Producer 参数(高吞吐)

acks=1
batch.size=16384
linger.ms=5
compression.type=snappy
buffer.memory=33554432

六、Consumer 参数

fetch.min.bytes=1024
fetch.max.wait.ms=500
max.poll.records=500

七、常用排查命令

# 查看吞吐
bin/kafka-consumer-groups.sh --describe --group g1 --bootstrap-server localhost:9092

# 磁盘
iostat -x 1

# JVM
jstat -gcutil <pid> 1000

八、典型场景建议

场景 建议
高吞吐 大 batch、snappy、多 partition
低延迟 少 linger、acks=1
强可靠 acks=all、min.insync=2
单机测试 单 broker、RF=1

如果你能告诉我:

  • Kafka 版本
  • 机器配置(CPU / 内存 / 磁盘)
  • 使用场景(日志 / 埋点 / 交易)

我可以给你一套直接能用的参数模板。

0 踩