首页 > 其他分享 >tcp性能优化方法

tcp性能优化方法

时间:2023-04-14 18:58:32浏览次数:40  
标签:TFO sysctl 性能 TCP ipv4 tcp 优化 net

一、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

  

 

参考:TCP性能优化 - 知乎 (zhihu.com)

标签:TFO,sysctl,性能,TCP,ipv4,tcp,优化,net
From: https://www.cnblogs.com/mango1997/p/17319305.html

相关文章

  • 软件质量属性之性能 科技小论文
    软件质量属性之性能耿晴(石家庄铁道大学信息科学与技术学院软件工程系;河北省石家庄市;050000) 摘要:性能是一个软件架构的重要指标,从用户的角度来看对于一个运行速度很慢的软件是很难长久地存在的,所以软件的性能的优化对于软件的存亡有着至关重要的作用。本文从开发人员视角、......
  • 计算机网络 传输层协议TCP和UDP
    目录一、传输层协议二、tcp协议介绍三、tcp报文格式四、tcp三次握手五、tcp四次挥手六、udp协议介绍七、常见协议和端口八、有限状态机  一、传输层协议传输层协议主要是TCP和UDP协议主要作用1.分段和重组2.会话多路复用 二、tcp协议......
  • APP性能测试_启动时间
     Android应用性能测试通常包括:启动时间、内存、CPU、耗电量、流量、流畅度等,下面就给大家介绍APP启动时间的测试。启动时间,分为下面二种冷启动:应用程序首次启动,进程首次创建并加载资源的过程热启动:应用程序启动后点“back”键、“Home”键,应用程序退到后台,并未被完全“杀死......
  • Google SEO怎么优化?揭秘实用技巧助你提升排名!
    站长们都知道,在谷歌搜索引擎中取得好的排名非常重要,但要如何优化GoogleSEO呢?本文将结合多年的站长运营经验,为大家揭示一些实用的GoogleSEO优化技巧。关键词策略的制定为了在谷歌搜索引擎中获得高排名,关键词策略至关重要。站长需要深入研究目标市场和用户需求,挑选出具有较高搜索量......
  • 谷歌优化2023算法揭秘:适应新变化,把握核心策略
    作为一名有多年运营经验的站长,我深知谷歌SEO的重要性。随着谷歌优化2023算法的发布,许多站长都在寻找新的策略来适应变化。在这篇文章中,我将分享一些关于新算法的见解和应对方法。1.了解谷歌优化2023算法的变化了解新算法的变化是站长们应对新算法的第一步。谷歌优化2023算法更加注......
  • 自主阅读笔记03《基于web 服务器的网站性能优化研究》
    文章来源信息记录材料by戴胜,朱琳、广东科技学院计算机系一、客户端优化实际指的是浏览器,在浏览器完成访问网站的时间中,有80%的时间用于加载图像、样式表、脚本等静态资源。浏览器的主要作用就是显示数据和发送http请求。1.减少HTTP请求一个页面中包含多个种类和多个数量的组件......
  • Hexo博客Next主题配置加载优化性能提升
    主题源加载优化把在NexT主题的_config.yml里面的:#Urioffontshost.E.g.//fonts.googleapis.com(Default)host:改为:#Urioffontshost.E.g.//fonts.googleapis.com(Default)host://fonts.lug.ustc.edu.cn因为fonts.lug.ustc.edu.cn是中科大的源,相比之前能快一下博客双......
  • 让SQL起飞(优化)
    最近博主看完了《SQL进阶教程》这本书,看完后给博主打开了SQL世界的新大门,对于SQL的理解不在局限于以前的常规用法。借用其他读者的评论,❝读完醍醐灌顶,对SQL做到了知其然更能知其所以然。全书从头到尾强调了SQL的内在逻辑是基于集合论和谓词逻辑,而着两条主线恰恰在使用SQL起......
  • MATLAB代码:考虑电动汽车负荷随机性的蓄电池容量优化配置
    代码代码MATLAB代码:考虑电动汽车负荷随机性的蓄电池容量优化配置关键词:蓄电池容量优化配置 储能优化配置 中长期配置并网波动性参考文档:《不确定环境下并网型光储微电网的容量规划》《考虑电动汽车有序充电的光储充电站储能容量优化策略_李景丽》仅参考部分模型,非完全复现......
  • MATLAB代码:基于条件风险价值的合作型Stackerlberg博弈微网动态定价与优化调度
    MATLAB代码:基于条件风险价值的合作型Stackerlberg博弈微网动态定价与优化调度注意:店主有大量P2P分布式交易以及纳什议价的代码,欢迎咨询关键词:微网优化调度条件风险价值合作博弈纳什谈判参考文档:《AcooperativeStackelberggamebasedenergymanagementconsideringpric......