Ubuntu上Kafka网络优化实操指南
一 基础网络与监听配置
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no
addresses: [192.168.1.10/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8,1.1.1.1]
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://<服务器公网或内网IP>:9092
zookeeper.connect=zk1:2181,zk2:2181,zk3:2181
sudo ufw allow 9092/tcp
sudo ufw allow 2181/tcp
sudo ufw reload
二 操作系统层网络参数
* soft nofile 65536
* hard nofile 65536
sudo sysctl -w net.core.somaxconn=65535
sudo sysctl -w net.ipv4.tcp_max_syn_backlog=4096
sudo sysctl -p
# 查看队列数
ethtool -l eth0
# 开启 RPS(将 4 替换为实际 CPU 核数)
echo f > /sys/class/net/eth0/queues/rx-0/rps_cpus
echo 4096 > /sys/class/net/eth0/queues/rx-0/rps_flow_cnt
# 如需 RFS,设置 rfs_flow_entries(如 32768),并开启 rfs
sudo ethtool -K eth0 gro on lro on gso on
三 Kafka Broker网络参数
num.network.threads=8
num.io.threads=16
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
max.connections=100000
replica.socket.timeout.ms=30000
replica.fetch.max.bytes=10485760
# 主题创建时按需设置分区数(示例)
num.partitions=12
# 副本因子与最小同步副本
default.replication.factor=3
min.insync.replicas=2
四 生产者与消费者网络优化
batch.size=16384
linger.ms=20
compression.type=lz4
max.in.flight.requests.per.connection=5
acks=1 # 强一致可设为 all,但网络/磁盘压力更高
fetch.min.bytes=1048576
fetch.max.wait.ms=500
max.partition.fetch.bytes=10485760
五 验证与监控
# 创建主题
./bin/kafka-topics.sh --create --topic test --bootstrap-server <broker_ip>:9092 --partitions 6 --replication-factor 3
# 列出主题
./bin/kafka-topics.sh --list --bootstrap-server <broker_ip>:9092
# 控制台生产/消费
./bin/kafka-console-producer.sh --bootstrap-server <broker_ip>:9092 --topic test
./bin/kafka-console-consumer.sh --bootstrap-server <broker_ip>:9092 --topic test --from-beginning