优化服务器单线程速率


原理

Linux最大的默认TCP发送、接收缓冲区(即net.core.wmem_maxnet.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发送缓冲区的最小值、默认值和最大值(以字节为单位)。


文章作者: xieshang
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC 4.0 许可协议。转载请注明来源 xieshang !
评论
  目录