最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
服务器配置如何调整 TCP 缓冲区大小提升网速
时间:2026-08-26 08:30:49 编辑:袖梨 来源:一聚教程网
TCP缓冲区调优需匹配带宽延迟积(BDP),公式为BDP=带宽(字节/秒)×RTT(秒),推荐设为BDP的1.2–1.5倍;必须同步调整net.core.rmem_max、net.core.wmem_max、tcp_rmem、tcp_wmem四参数,并启用tcp_window_scaling和BBR拥塞控制。
调 TCP 缓冲区不是简单“越大越好”,而是要让接收/发送窗口能撑开到匹配你实际链路的带宽延迟积(BDP),否则窗口卡在 64KB,再快的网也跑不满。
先算清楚你需要多大缓冲区
核心公式是:BDP = 带宽(字节/秒) × RTT(秒)。比如:
- 1Gbps 链路 → 带宽 ≈ 125MB/s;RTT = 40ms → BDP ≈ 5MB
- 10Gbps + 跨国 150ms → BDP ≈ 187MB
缓冲区最大值建议设为 BDP 的 1.2–1.5 倍,留点余量应对抖动。别直接套用网上“全设 16MB”的通用值——小带宽低延迟场景设太大反而浪费内存、拖慢响应。
改对这四组内核参数
必须同时调整,缺一不可:
- net.core.rmem_max 和 net.core.wmem_max:全局硬上限,单位字节,必须 ≥ 后面 tcp_rmem/wmem 的最大值
-
net.ipv4.tcp_rmem:三元组“最小 默认 最大”,如
4096 524288 8388608表示最小 4KB、默认 512KB、最大 8MB - net.ipv4.tcp_wmem:同上,发送侧,通常默认值可略低于接收侧(如设为 256KB)
例如针对 1Gbps + 50ms 场景,可设:
net.core.rmem_max = 12582912net.core.wmem_max = 12582912
net.ipv4.tcp_rmem = 4096 524288 12582912
net.ipv4.tcp_wmem = 4096 262144 12582912
必须配套打开窗口缩放
TCP 头部窗口字段只有 16 位,不启用缩放就永远卡在 65535 字节(64KB)。执行:
- sysctl net.ipv4.tcp_window_scaling 应返回 1
- 若为 0,运行
sysctl -w net.ipv4.tcp_window_scaling=1并写入/etc/sysctl.conf - 验证 SYN 握手包是否含 wscale 选项:用
tcpdump -i any 'tcp[tcpflags] & (tcp-syn|tcp-ack) != 0'抓包看
顺手加上两个关键优化
单调缓冲区效果有限,建议一并配置:
-
启用 BBR 拥塞控制:比传统 cubic 更激进填满大窗口,加一行
net.ipv4.tcp_congestion_control = bbr - 统一 MTU:宿主机与容器网络(如 CNI)都设为 1500 或 9000,避免分片和 PMTU 探测失败重传
改完执行 sysctl -p 生效,用 ss -i 查看活跃连接的 rcv_wnd/snd_wnd 是否已突破 64KB。