Linux Kafka网络设置优化指南
一 基础网络与监听配置
listeners=INTERNAL://192.168.1.10:9092,EXTERNAL://203.0.113.10:19092
advertised.listeners=INTERNAL://192.168.1.10:9092,EXTERNAL://203.0.113.10:19092
inter.broker.listener.name=INTERNAL
listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
说明:内网流量走 INTERNAL,跨公网或对外客户端走 EXTERNAL;broker 间通信使用内网监听器,减少暴露面与跳数。sudo firewall-cmd --permanent --add-port=19092/tcp && sudo firewall-cmd --reloadsudo ufw allow 19092/tcplisteners=PLAINTEXT://0.0.0.0:9092二 操作系统内核网络参数
# /etc/sysctl.conf
net.core.wmem_default=4194304
net.core.rmem_default=4194304
net.core.wmem_max=16777216
net.core.rmem_max=16777216
net.core.optmem_max=4194304
net.ipv4.tcp_rmem=4096 87380 16777216
net.ipv4.tcp_wmem=4096 65536 16777216
net.core.netdev_max_backlog=250000
net.core.somaxconn=65535
net.ipv4.tcp_max_syn_backlog=4096
net.ipv4.tcp_window_scaling=1
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_fin_timeout=30
提示:将发送/接收缓冲区上限提升到 16 MB 可在高吞吐(如 10 GbE+)下减少小包导致的频繁系统调用与拥塞窗口受限问题。# /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
# 如使用 systemd 管理的服务,在 unit 中亦需设置 LimitNOFILE=65536
说明:Kafka 连接与日志段文件众多,建议将 nofile ≥ 65536,并按峰值连接数评估更高上限。三 Broker 网络相关参数
num.network.threads:处理入站网络请求(如接受、解析)的线程数,建议从 8–16 起步,按 CPU/网卡中断分布调优。num.io.threads:处理磁盘 I/O 的线程数,建议从 8–16 起步,结合磁盘并发度与负载测试调优。socket.send.buffer.bytes:建议设置为 1 MB(或更大),减少小包发送的系统调用次数。socket.receive.buffer.bytes:建议设置为 1 MB,提升大消息/高并发接收缓冲能力。socket.request.max.bytes:根据业务最大消息与批量大小合理上调,避免请求被截断或拒绝。四 验证与监控
nc -vz <broker_ip> <port>、telnet <broker_ip> <port>ping -M do -s <MTU-28> <ip>,ip -s link 观察 RX/TX 错误与丢包计数。iperf3 -c <broker_ip> -P 8ping <broker_ip>五 场景化建议与注意事项
net.core.rmem_max/wmem_max 与 tcp_rmem/tcp_wmem 上限提升到 16 MB,结合 somaxconn ≥ 65535 与 netdev_max_backlog 提升突发承载能力。