一、TCP fast open
原理简介:
三次握手带来的延迟使得每创建一个新TCP连接都要付出很大代价。而这也决定了提高TCP应用性能的关键,在于想办法重用连接。
TFO(TCP fast open)允许服务器和客户端在连接建立握手阶段交换数据,从而使应用节省了一个RTT的时延。
但是TFO会引起一些问题,因此协议要求TCP实现必须默认禁止TFO。需要在某个服务端口上启用TFO功能的时候需要应用程序显示启用。
开启方法:
//查看TFO开关状态 sysctl net.ipv4.tcp_fastopen //开启TFO sysctl -n net.ipv4.tcp_fastopen = 0x203
效果:
经过流量分析和网络模拟,谷歌研究人员发现TFO平均可以降低HTTP事务网络延迟15%、整个页面加载时间10%以上。在某些延迟很长的情况下,降低幅度甚至可达40%。
二、长链接(Keep-Alive)
原理简介:
Keep-Alive,HTTP 1.1 之后默认开启,指在一个 TCP 连接中可以持续发送多份数据而不会断开连接。
使用方法:
net.ipv4.tcpkeepalivetime:表示TCP链接在多少秒之后没有数据报文传输启动探测报文 net.ipv4.tcpkeepaliveintvl:前一个探测报文和后一个探测报文之间的时间间隔 net.ipv4.tcpkeepaliveprobes:探测的次数
三、扩大拥塞控制的窗口大小
原理简介:
流量控制是一种预防发送端过多向接收端发送数据的机制。否则,接收端可能因为忙碌、负载重或缓冲区容量有限而无法处理。为实现流量控制,TCP连接的每一方都要通告自己的接收窗口(rwnd),其中包含能够保存数据的缓冲区空间大小信息。客户端与服务器之间最大可以传输数据量取rwnd和cwnd变量中的最小值。
扩大方法:
//查看状态 sysctl net.ipv4.tcp_window_scaling //开启 sysctl -w net.ipv4.tcp_window_scaling=1
效果:
开启窗口缩放,能使接收窗口大小从2^16升级到2^30,可以获得更好的传输性能。比起不开启窗口缩放,能够充分利用带宽。
四、将慢启动的拥塞窗口初始值变大
原理简介:
客户端与服务器之间最大可以传输(未经ACK确认的)数据量取rwnd和cwnd变量中的最小值,而一开始的cwnd很小,通过慢启动算法不断增大。
方法:
在内核中增加一个控制initcwnd的proc参数,/proc/sys/net/ipv4/tcp_initcwnd。该方法对所有的TCP连接有效。初始拥塞窗口不能设置特别大,否则会导致交换节点的缓冲区被填满,多出来的分组必须删掉,相应的主机会在网络中制造越来越多的数据报副本,使得整个网络陷入瘫痪。行业内各大cdn厂商都调整过init_cwnd值,普遍取值在10-20之间。
五、禁用慢启动重启
原理简介:
SSR(Slow-Start Restart,慢启动重启)会在连接空闲一定时间后重置连接的拥塞窗口。
方法:
//查看状态 sysctl net.ipv4.tcp_slow_start_after_idle //关闭 sysctl -w net.ipv4.tcp_slow_start_after_idle=0
标签:TFO,sysctl,性能,TCP,ipv4,tcp,优化,net From: https://www.cnblogs.com/mango1997/p/17319305.html