Page 42 - Web性能权威指南
P. 42

keep-alive、流水线和多路复用的优化就简单得多了。



                                      增大 TCP 的初始拥塞窗口
                把服务器的初始 cwnd 值增大到 RFC 6928 新规定的 10 段(IW10),是提升用户体
                验以及所有 TCP 应用性能的最简单方式。好消息是,很多操作系统已经更新了内
                核,采用了增大后的值。可以留意相应的文档和发布说明。
                在 Linux 上,IW10 是 2.6.39 以上版本内核的新默认值。但不要就此满足,升级到
                3.2 以上版本还有其他重要更新,比如 2.2.3 节的“TCP 比例降速”。


               2.2.3 拥塞预防

               认识到 TCP 调节性能主要依赖丢包反馈机制非常重要。换句话说,这不是一个假
               设命题,而是一个具体何时发生的命题。慢启动以保守的窗口初始化连接,随后的
               每次往返都会成倍提高传输的数据量,直到超过接收端的流量控制窗口,即系统
               配置的拥塞阈值(ssthresh)窗口,或者有分组丢失为止,此时拥塞预防算法介入
              (图 2-3)。

               拥塞预防算法把丢包作为网络拥塞的标志,即路径中某个连接或路由器已经拥堵了,
               以至于必须采取删包措施。因此,必须调整窗口大小,以避免造成更多的包丢失,
               从而保证网络畅通。
               重置拥塞窗口后,拥塞预防机制按照自己的算法来增大窗口以尽量避免丢包。某个
               时刻,可能又会有包丢失,于是这个过程再从头开始。如果你看到过 TCP 连接的吞
               吐量跟踪曲线,发现该曲线呈锯齿状,那现在就该明白为什么了。这是拥塞控制和
               预防算法在调整拥塞窗口,进而消除网络中的丢包问题。

               值得一提的是,改进拥塞控制和预防机制既是学术研究的课题,也是商业研发的
               方向。毕竟,有那么多不同的网络、不同的数据传输方式需要适应。今天,你的
               平台中可能运行着下列诸多 TCP 版本中的一个:TCP  Tahoe 和 Reno(最早的实
               现)、TCP Vegas、TCP New Reno、TCP BIC、TCP CUBIC(Linux 的默认实现)或
               Compound  TCP(Windows 的默认实现),等等。然而无论你使用哪一个,拥塞控制
               和预防对网络性能的影响都是存在的。


                                            TCP 比例降速

                确定丢包恢复的最优方式并不容易。如果太激进,那么间歇性的丢包就会对整个
                连接的吞吐量造成很大影响。而如果不够快,那么还会继续造成更多分组丢失。



               24   |   第 2 章
   37   38   39   40   41   42   43   44   45   46   47