- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
linuxtcp优化的案例详解
Linux TCP/IP 优化案例详解;
跨机房传输文件为什么这么慢?
短连接传输速率还能提高吗?
我们后台服务时间才几十毫秒,为什么我们的用户感知时间却是秒级的?
TCP/IP - 窗口机制
TCP/IP – 拥塞控制
TCP/IP – 拥塞算法
;
问题
北京-上海间传输速率太慢,单socket 2MB/s左右。
可选方法
1)创建多个socket连接
2) 增大TCP缓冲(发送/接收)传输速率30MB/s
思考
为什么增大缓冲,就能提高传输速率?
为什么BJ 机房内不增大缓冲,也能达到几十兆的速率?
发送/接收缓冲中,只调整一个,行不行?;
原理分析
带宽公式
网络带宽=(win*MSS)/rtt
win=min{发送窗口,拥塞窗口}
BJ-BJ RTT 1ms BJ-SH RTT 20-30ms
;
问题
短连接下,BJ和SH间发送1MB的文件, 传输速率太慢,只有4MB/s。
解决方法
修改内核,增大TCP初始窗口(滑动窗口、拥塞窗口)
传输速率提高到12MB/s
思考
12MB/s是否已经是上限了,还有提高的余地吗?
;
速度是否已经达到上限
TCP传输一个1MB的文件最少需要2.5个RTT
TCP三次握手占用1.5个RTT,
数据传输最少占1个RTT,
即20ms×2.5=50ms
最大传输速率为1MB/50ms=20MB/s。
;
问题
,我们后台的服务时间几十毫秒,为什么我们的用户感知的时间却是秒级?
瓶颈分析方向
用户感知服务时间 = 后台服务时间 + 公网(接入网)数据传输时间 + 浏览器展现时间
搜索结果命中cache的情况下,办公区访问更快
思考
与对比,差异应该主要在公网传输时间上? 传输时间如何测量?传输时间占多大比重? 后台服务时间能够控制和优化,传输时间是否也能优化?;
测试工具至关重要
;
RTT = t2-t1后端服务时间 = t4-t3 数据传输时间 = max(t5 - t4 + RTT/2, t6-t4 – RTT/2)
服务响应时间= max(t5 - t3 + RTT/2, t6-t3 – RTT/2)
;
平均后台服务时间:接入网平均传输时间
= 1 :10
瓶颈分析方向
平均请求的数据包的小 5 ~ 12左右
丢包情况 重复包率高
思考
平均传输数据量小,均属于短连接数据传输,??连接数据传输速率受那些因素影响?
丢包后,平均传输时间均达到1-4s, 很大比例超过3s,是否和丢包的机制有关?
;
频繁的慢启动
请求的应答数据少,频繁的进入慢启动过程
慢启动初始窗口2,丢包后慢启动窗口为1
delay Ack机制 导致慢启动窗口增长缓慢
超时重传
RTO与RTT采样有关,初始RTO为3s
客户端不支持timestamp选项,导致RTT采样不太精确
delay Ack最大延迟200MS,导致RTT采样速度和频率都受影响
;
慢启动优化
增加慢启动初始发送窗口(2 - 4~8,proc参数)
增加丢包后发送窗口(1- 2~4, proc参数)
增加对窗口增加/减小速度进行控制的相关参数(proc)
(对比分析了baidu,google的相关参数,同时参考了HSTCP和google论文中的解决方案)
超时重传优化
建立连接的过程中采样RTT,用于计算初始RTO (3s - max(200, 2RTT)
RTO计算 max(200,3RTT) - (100, 2RTT)
部分快速重传取代超时重传,快速重传条件 3 - 2
副作用
重复包率上升
;
优化传输时间效果
北京联通 369ms 优化后181ms 下降188ms 50.8%
深圳电信 490ms 203ms 287ms 58.5%
上海电信 449ms 217ms 232ms 51.7%
西安电信 417ms 205ms 212ms 50.6%
西安教育网 834ms 399ms
文档评论(0)