原理
Linux
最大的默认TCP
发送、接收缓冲区(即net.core.wmem_max
和net.core.rmem_max
)只有4M
,也就是说,按照 延迟*速度/8=所需缓冲区 来计算的话,只要你的延迟大于32ms
,G口就会受限于发送缓冲区,导致网速跑不满。
修改/etc/sysctl.conf
如下:
net.ipv4.tcp_window_scaling = 1
net.core.rmem_max = 33554432
net.core.wmem_max = 33554432
net.ipv4.tcp_rmem = 4096 131072 33554432
net.ipv4.tcp_wmem = 4096 16384 33554432
之后运行sysctl -p
让参数生效即可。
参数解析
net.ipv4.tcp_window_scaling = 1
是启用TCP
窗口缩放选项。TCP
窗口缩放是一个允许TCP
在高带宽-延迟产品(BDP)的网络上使用更大窗口大小的机制。启用该选项可以提高在这些网络环境下的传输效率。net.core.rmem_max
是系统允许的最大接收缓冲区大小(以字节为单位);net.core.wmem_max
是系统允许的最大发送缓冲区大小(以字节为单位)。net.ipv4.tcp_rmem
后跟的三个值表示TCP
接收缓冲区的最小值、默认值和最大值(以字节为单位);net.ipv4.tcp_wmem
后跟的三个值表示TCP
发送缓冲区的最小值、默认值和最大值(以字节为单位)。