温馨提示×

centos kafka如何调优

小樊
43
2026-10-14 20:24:27
栏目: 智能运维

在 CentOS 上运行 Kafka,调优通常分为 操作系统层、JVM 层、Kafka 配置层、磁盘与网络层。下面给你一套实战向的调优清单,适合生产环境参考。


一、CentOS 操作系统层调优

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

Kafka 会大量使用文件句柄。

# 查看
ulimit -n

# 修改(永久)
vi /etc/security/limits.conf
* soft nofile 1000000
* hard nofile 1000000

2. 虚拟内存(避免 swap)

# 尽量关闭 swap
swapoff -a

# 永久关闭
vi /etc/fstab  # 注释 swap 行

# 降低 swappiness
sysctl -w vm.swappiness=1
echo "vm.swappiness=1" >> /etc/sysctl.conf

3. 网络参数优化

vi /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
net.ipv4.tcp_fin_timeout = 30

sysctl -p

二、磁盘与文件系统调优(Kafka 最关键)

1. 使用独立磁盘

  • 日志目录单独挂载磁盘
  • 推荐使用 SSD / NVMe(高吞吐场景)
log.dirs=/data/kafka/logs

2. 文件系统

  • 推荐 ext4 / xfs
  • 挂载参数:
mount -o noatime,nodiratime /dev/sdb /data

三、JVM 调优(Kafka 是 JVM 应用)

1. 堆内存(不要太大)

export KAFKA_HEAP_OPTS="-Xms6g -Xmx6g"

经验值:

  • Broker:6–10G
  • 不要超过 32G(避免压缩指针失效)

2. GC 推荐

KAFKA_JVM_PERFORMANCE_OPTS="
-XX:+UseG1GC
-XX:MaxGCPauseMillis=200
-XX:InitiatingHeapOccupancyPercent=35
"

四、Kafka Broker 核心参数调优

server.properties 关键参数

1. 线程相关

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

CPU 核数多可适当加大

2. 日志刷盘策略(性能 vs 安全)

# 高性能(允许少量丢失)
log.flush.interval.messages=10000
log.flush.interval.ms=1000

3. 副本与一致性

default.replication.factor=3
min.insync.replicas=2

4. 段文件大小

log.segment.bytes=1G

5. 压缩(带宽优化)

compression.type=snappy

五、Producer 调优(吞吐关键)

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

高吞吐:acks=1 + batch + linger


六、Consumer 调优

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

七、监控与压测(必须做)

1. 监控指标

  • Under Replicated Partitions
  • Request Handler Idle
  • Disk IO Wait
  • GC 时间

2. 压测工具

# 生产压测
kafka-producer-perf-test.sh

# 消费压测
kafka-consumer-perf-test.sh

八、常见性能问题速查

问题 可能原因
吞吐上不去 磁盘 IO / 线程数不足
消费延迟 fetch 参数 / 消费逻辑慢
CPU 高 GC / 压缩 / 网络线程
丢消息 acks=0 / 副本不足

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

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

我可以给你一套 针对性参数模板。

0 踩