在做云服务器网络优化时,很多站长都会听到一句话:“带宽够了,但TCP跑不满。”而造成这个问题的罪魁祸首,十有八九就是——TCP Window Size(窗口大小)不合理”。那么, TCP Window Size 是什么?为什么不调窗口就跑不满带宽?Linux云服务器如何正确调整 Window Size?只要你认真看完这篇文章,就能真正理解TCP优化,而不是“复制参数却不知道在干嘛”。
一、什么是TCP Window Size?一句话讲清楚
TCP Window Size(窗口大小)指的是:在收到确认之前,接收端允许发送端连续发送的数据量。
简单理解:窗口越大,一次能“在路上飞”的数据越多,网络利用率越高。如果窗口太小,TCP 就会频繁“等确认”,带宽自然跑不满。
用一个生活化的比喻理解,把TCP传输想象成送快递:带宽相当于高速公路有几条车道,RTT延迟就是快递从你到仓库来回的时间,Window Size等同于一次能发多少辆车。如果窗口很小:公路再宽,也只允许几辆车同时上路——浪费!
二、为什么云服务器默认Window Size不够用?
Linux默认TCP参数主要是为局域网,低延迟内网,普通服务器环境。而不是为跨境网络,高RTT(50ms~200ms),高带宽云服务器。所以在香港、日本、新加坡云服务器这种环境下,默认窗口往往偏小。
带宽 × 延迟 = 所需窗口大小,这是 TCP 优化中最重要的公式之一。举个非常典型的例子:带宽100Mbps,RTT 80ms,通过公式计算可以得出至少需要1MB的TCP窗口才能跑满带宽,而很多系统默认窗口,远远达不到这个级别。
三、Window Size太小会带来哪些问题?
如 TCP窗口没有调好,你可能会遇到下载速度始终上不去,高峰期页面加载明显变慢,CDN回源慢,大文件传输效率极低,看似“丢包不高”,但速度就是慢。
注意:这类问题不是带宽问题,也不是服务器性能问题,而是TCP机制本身在“限速”。
四、TCP Window Size由哪些参数共同决定?
在Linux云服务器中,TCP Window Size 并不是一个单一参数,而是一组参数协同工作。
1. 核心参数一览
net.core.rmem_max
net.core.wmem_max
net.ipv4.tcp_rmem
net.ipv4.tcp_wmem
net.ipv4.tcp_window_scaling
2. rmem / wmem 是什么?
rmem:接收缓冲区
wmem:发送缓冲区
它们决定了TCP Window Size的上限。
3. tcp_rmem/tcp_wmem三个值的含义
以 tcp_rmem 为例:
net.ipv4.tcp_rmem = 4096 87380 67108864
含义分别是:
最小值:最低使用缓冲
默认值:普通连接初始值
最大值:自动调节上限
真正决定 Window Size 上限的是第三个值。
4. tcp_window_scaling 必须开启
net.ipv4.tcp_window_scaling
- 0:关闭(最大窗口 64KB)
- 1:开启(支持 MB 级窗口)
如果不开启这个参数,你怎么调都没用。
五、云服务器Window Size优化实战
1. 查看当前窗口相关参数
sysctl -a | grep rmem
sysctl -a | grep wmem
2. 编辑 sysctl 配置文件
vi /etc/sysctl.conf
3. 推荐的Window Size 优化配置
这套配置适合香港/日本/新加坡云服务器、2G–8G内存VPS,跨境访问场景
# 开启窗口缩放
net.ipv4.tcp_window_scaling = 1
# TCP 接收缓冲
net.core.rmem_max = 67108864
net.ipv4.tcp_rmem = 4096 87380 67108864
# TCP 发送缓冲
net.core.wmem_max = 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864
4. 让配置立即生效
sysctl -p
六、Window Size调整后的效果如何验证?
1. 查看窗口缩放是否开启
sysctl net.ipv4.tcp_window_scaling
应返回:
net.ipv4.tcp_window_scaling = 1
2. 使用 ss 查看 TCP 状态
ss -i
可以看到类似:
cwnd: 1024
rtt: 75ms
窗口值明显大于默认。
总结:Window Size决定TCP能不能把“在路上的数据”铺满。优化TCP必须记住:跨境云服务器必须调Window Size,窗口大小要匹配带宽和RTT,tcp_window_scaling 必须开启,Window Size要和BBR一起用,只有这样,才能够真正调出速度。
推荐文章
