1、从TCP的角度理解速度优化淘宝-核心系统研发-服务器平台组叔度编辑ppt问题2杭州某用户带宽2Mbps,在想要下载一个位于北京的1个字节的文件,需要多少时间?1*8/(2*1024*1024)=4微秒?编辑ppt实际情况3在杭州办公室ping淘宝北京电信CDN延时值为38毫秒Why?编辑ppt原因4比特在网络上要以光/电波传播北京和杭州之间很近,但是也是有距离的光/电的传播速度没有快到可以忽略不计!编辑ppt两地直线距离51300公里编辑ppt理论值6真空中30万公里每秒光在玻璃的传播速度是真空的2/3往返距离1300*2=2600公里1300*2/(300000*2/3)=13毫秒编辑ppt
2、其他因素7路很难是直线,光纤也不可能全部是直线光在光纤里面全反射传输中间传输过程中的损耗,如路由器等所以需要乘上23倍左右的因子30/13=2.3(CM4机房)38/13=2.9(杭州办公室)编辑ppt带宽8带宽的表示是比特,不是字节我们用的宽带上行下行是不相等的带宽代表了能最大同时在网络上接收的比特数带宽和延时没有关系传输时间不是 大小/带宽!编辑ppt中国网络的现状9带宽和非洲接轨价格和欧洲接轨世界上最遥远的距离是网通和电信的距离中国的平均网速世界排名第78平均速度1.7Mbps编辑ppt带宽 vs.延时10带宽和延时没有关系可以提高带宽,但是无法降低延时两个铁球同时落地2G的带宽和2M的
3、网速传输1个字节的时间是一样的编辑ppt小结11光的传输需要时间带宽和延时没有关系你可以提高带宽,但是你无法降低延时延时不能被忽略延时对网络程序速度影响很大中国的网络情况不理想编辑ppt互联网的基石12应用最广泛的协议是HTTPHTTP和其他协议的基础是TCP编辑pptTCP/IP的层层封包13下层在上层的基础上加一个头(图示)不同的层次的不同类型Segment(TCP)Packet(IP)Frame(Link)编辑ppt以太网传输的对象大小14Frame1542MTU1500MSS1460一次TCP能传输的最大大小记住这些数字!记住这些数字!编辑pptTCP的基本特点15可靠的面向字节流面向
4、连接全双工底层使用IP协议进行传输编辑pptIP协议的特点16无连接基于包不可靠包的顺序不能保证路由器可根据需要丢包很多问题的根源很多问题的根源编辑ppt常见问题:为什么性能压测上不去17短连接大量TIME_WAIT性能上不去编辑pptTCP的状态1811个状态三路握手主动打开被动打开四路关闭主动关闭被动关闭编辑pptTIME_WAIT vs.CLOSE_WAIT19TIME_WAIT主动关闭2MSLCLOSE_WAIT被动关闭99%意味着你的应用程序有bug编辑pptLinux内核网络参数调优20本地端口net.ipv4.ip_local_port_range=1024 65535优化短连接
5、net.ipv4.tcp_fin_timeout=15 net.ipv4.tcp_tw_reuse=1 net.ipv4.tcp_tw_recycle=1 编辑ppt真实案例:为什么传输速度上不去?21背景CM4机房(杭州)和CM5机房(青岛)带宽 1G bits/s,延时 30ms传输大文件问题RHEL 5之间40MB/sRHEL 4之间4MB/sWhy?编辑pptTCP的传输速度流控22原则快的发送方不能淹没慢的接收方接收方窗口控制接收方通告窗口(awnd)发送方窗口控制滑动窗口(swnd)拥塞窗口(cwnd)swnd=min(awnd,cwnd)编辑pptTCP的窗口大小的上限23受套接
6、字的缓冲区大小限制内核会根据传输情况自动调整从Linux2.4起,发送端自动调整从Linux2.6.7开始,接收端自动调整系统默认值RHEL 4(2.6.9)net.ipv4.tcp_rmem=4096 87380 174760net.ipv4.tcp_wmem=4096 16384 131072RHEL 5(2.6.18)net.ipv4.tcp_rmem=4096 87380 4194304net.ipv4.tcp_wmem=4096 16384 4194304编辑ppt窗口的计算公式24BDP(Bandwidth Delay Product)带宽(Bytes/s)*RTT(s)代表了能在
7、网络上fly的最大字节数问题定位RHEL 4:131072/(0.015*2)/1024/1024=4.17MB/sRHEL 54194304/(0.015*2)/1024/1024=133.33MB/s编辑pptLinux内核网络参数调优25缓冲区大小net.core.rmem_default=262144net.core.wmem_default=262144net.core.rmem_max=16777216net.core.wmem_max=16777216net.ipv4.tcp_rmem=4096 87380 16777216net.ipv4.tcp_wmem=4096 65536
8、 16777216编辑pptTCP的核心是拥塞控制26手段慢启动拥塞避免快速重传快速恢复目的探测网络速度保证传输顺畅编辑ppt慢启动27规则窗口从一个小的值开始指数增长上限阈值合理性避免淹没慢的接收方避免网络瘫痪问题往往慢启动还没终止,连接已经结束用户的速度极限还没到编辑ppt优化案例:增大初始拥塞窗口28慢启动初始窗口值默认值2、3、4Google的实验,10最佳我们的实验,7最佳设置方法内核版本(=2.6.38)ip route change考虑因素性能提高百分比+TCP重传率的影响-编辑ppt优化案例:增大初始拥塞窗口29提升速度商品详情15%,减少下载时间311毫秒店铺提升20%基调数
9、据编辑pptTCP拥塞窗口的增加方式30慢启动期间发送方每收到一个ack,拥塞窗口加1接收方收到2个包,发送1个ack编辑ppt多少个来回31TCP的基本交互过程:发送-等待-发送-等待等待时间的单位就是RTT编辑ppt节省多少个RTT?32节省多少个RTT就可以节省几倍的往返时间编辑pptTCP拥塞控制的核心33慢启动结束就进入拥塞避免到达ssthresh超时或丢包发生拥塞避免AIMD(线性增长,乘性减少)增长变缓(每RTT时间窗口加1)编辑ppt真实案例:为什么淘宝首页这么慢?34移动用户淘宝移动节点咆哮体邮件(江苏移动 vs.浙江移动)编辑ppt问题排查35服务淘宝首页的Nginx顶不住
10、了吗?去年一年没有对Nginx服务器扩容定位:不是Nginx,而是TCP重传率超高编辑ppt问题解决36运营商导致我们的网络丢包严重省内OK,出省质量巨差换了一个IP,终于和谐了编辑ppt原因分析:丢包和超时的影响37重传是由丢包和超时引起的丢包重新进入慢启动拥塞窗口阈值变为原来的一半,速度抖降超时重传超时(RTO)指数后退超时例子连接超时3+6+12+24+48+96=189秒编辑pptLinux内核网络参数调优38拥塞控制算法net.ipv4.tcp_congestion_control=cubic编辑ppt服务器开发:理解TCP39操作的对象是socket读写缓冲区send/write成
11、功并不代表已经发送到对端应用程序中响应时间的含义明白设置缓冲区大小的影响关键应用需要保证可靠性需要应用级别的心跳检测编辑ppt服务器开发:高效读写40合理使用重要的TCP选项TCP_DEFER_ACCEPTTCP_CORKTCP_NODELAY使用writev/readv真正理解non-blocking的套接字编程真正理解epoll编辑ppt服务器开发:诊断41Linux内核TCP统计信息/proccat/proc/net/netstatcat/proc/net/snmpnetstatnetstat s重视dmesg中和网络相关的信息编辑pptLinux内核网络参数调优42Listen队列ne
12、t.ipv4.tcp_max_syn_backlog=16384 net.core.somaxconn=2048网卡的接收队列dev_max_backlog=10000网卡发送队列ifconfig eth0 txqueuelen 10000编辑ppt前端开发:文件尺寸43体积越小越好去空格、注释启用gzip针对文本类型的文件设置允许gzip的最小尺寸,1K左右在速度和压缩比之间平衡编辑ppt前端开发:cookie和URL的影响44现在的网络往往上传带宽小分成几个包影响GET/POST的速度3K,2个包(MSS)减小cookie和URL在HTTP头,不能被gzip压缩挑战浏览器的URL限制没意义
13、编辑ppt前端开发:CSS/Javascript45HTML中把assets放前面同等重要程度下,尺寸小的assets放前面使用CDN Combo功能,减少请求数编辑ppt前端开发:长连接 vs.短连接46连接建立(三路握手)需要的时间权衡资源占用与响应时间针对应用特点设置时间编辑ppt勿在浮沙筑高台 进阶阅读47RFC文档源码之前,了无秘密(RTFSC)Linux内核TCP/IP协议栈实现编辑ppt谢谢48Q&A编辑ppt附录0:你需要知道的数字(Jeff Dean)L1 cache读取 0.5ns分支误预测 5nsL2 cache读取 7ns互斥锁 100ns内存读取 100ns压缩1K数据 10000ns在1G网络上发送2K数据 20000ns从内存连续读取1M数据 250000ns同一数据中心的往返时间(RTT)500000ns磁盘寻道时间 10000000ns从网络上顺序读取1M数据 10000000ns从磁盘上顺序读取1M数据 30000000ns发送一个包从从加州-荷兰-加州 150000000ns编辑ppt附录1:epoll的那些事儿50基本原理UNIX中一切都是文件红黑树避免多余的内存拷贝与事件检查误区ET模式EPOLLOUT事件ET与LT的区别编辑ppt附录2:Linux内核TCP/IP协议栈阅读引导51源代码目录介绍重要的数据结构阅读方法推荐书籍编辑ppt