• <ul id="mayc0"></ul>
    <ul id="mayc0"><center id="mayc0"></center></ul>
    <strike id="mayc0"><input id="mayc0"></input></strike>
    <ul id="mayc0"></ul>
  • 始創于2000年 股票代碼:831685
    咨詢熱線:0371-60135900 注冊有禮 登錄
    • 掛牌上市企業
    • 60秒人工響應
    • 99.99%連通率
    • 7*24h人工
    • 故障100倍補償
    您的位置: 網站首頁 > 幫助中心>文章內容

    更快的網絡與TCP慢啟動機制

    發布時間:  2012/9/7 1:06:38

    還在糾結到哪里能找到“最好最快的”網絡提供商?最近我聽取并比較了十多個不同的方案之后,有人提醒了我一個簡單的事實:業界采用的主要指標(帶寬)實際上極具誤導性。其實對于大部分網站瀏覽的應用來說,超過幾兆的網絡連接對于性能只有很小的提升。

    罪魁禍首之一就是“TCP慢啟動”,對,這是個功能,不是缺陷。要理解其中的原因,我們必須到TCP棧里面一探究竟,這樣我們也能學到一些建立更快速網絡服務的有趣的小技巧。

    TCP慢啟動

    TCP協議提供了許多內置的功能,其中我們感興趣的兩個是擁塞控制和擁塞避免。TCP慢啟動是TCP層內部實現擁塞控制的一種機制。

     

     

    慢啟動和其它一些算法聯合使用,避免發送過多的數據以至網絡無力傳輸,也就是防止網絡擁塞。

    - wikipedia

    表面上的流程很簡單:客戶端發送一個SYN包,它告知本端的最大緩存大小(rwnd - 接收窗口),發送端回傳幾個包作為應答(cwnd-擁塞窗口),之后,每次它收到來自客戶端的ACK包,它就把發送包(傳輸中并未收到確認的)的數量加倍。

    這個過程也被稱作TCP連接的“指數增長”階段。OSI學院有一個很好的動畫演示這個過程:(滾動到底點擊播放)。那么,這和我們有什么關系呢?不管你的帶寬有多大,每一個TCP連接都要經歷這個過程,這也就是說,通常情況下,實際用到的帶寬受制于發送端和接收端的緩存大小的設置。

    HTTP和TCP慢啟動

    或者,稍微換個說法,一個10M的帶寬平均上只用了16%的容量。老天!這說明,如果我們要提高網速,我們應該著眼于降低客戶端和服務器之間的往返時延,而不一定要一味地花錢提高帶寬。當然,當你在緩沖一個大文件的時候高帶寬很有用,或者跑個速度測試也能唬唬人。問題是,基于HTTP的交互傾向于應用短暫、突發的連接 - 在這樣的情況下,我們常常無法占用信道的全部容量!Google做一個研究表明,當帶寬從5M升高到10M,頁面加載時間只提高了讓人失望的5%。

    CWND的故事

    如果TCP慢啟動很慢的話,我們不能讓它快一點么?其實,直到最近,Linux TCP棧本身把擁塞窗口(cwnd)的初始值硬編碼為3到4個包,這也就是4kb的大。ㄒ粋包大約1360字節)。還有個頻繁發生的問題,HTTP有每獲取一個資源要建立一個連接的毛病。這些加在一塊,你的性能就受到了嚴重限制。

     

     

    在內核2.6.33版本里,經過了長期討論和提交很多的IETF修改建議之后,cwnd的初始值被設為10個包。這本身就是一個很大的進步。但是有個問題,猜猜現在大部分服務器跑的是什么版本的內核?沒錯,也許現在是時候更新你的服務器了。給你個實用的小提示,如果你考慮你的網絡服務開始使用SPDY,那么如果不在最近的幾個內核上面跑,你實際上不會得到任何的性能提升!TCP棧的一個小小的改動在全局能產生巨大的變化。

    那么我該怎么辦?

    TCP慢啟動是一個功能,不是缺陷,而且它的確包含有趣而重大的意義。作為開發者,我們經常會忽視客戶端到服務器的往返時延,但是如果如果我們真有志于建立更快的網站,現在該去研究一下這些選擇了:在和網絡服務通信的時候重用TCP連接,建立支持HTTP keep-alive和流水線的網絡應用,重視端到端的時延。噢,還有,別在高于10兆的寬帶上浪費錢了,可能你根本就不需要。


    本文出自:億恩科技【www.vbseamall.com】

    服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]

  • 您可能在找
  • 億恩北京公司:
  • 經營性ICP/ISP證:京B2-20150015
  • 億恩鄭州公司:
  • 經營性ICP/ISP/IDC證:豫B1.B2-20060070
  • 億恩南昌公司:
  • 經營性ICP/ISP證:贛B2-20080012
  • 服務器/云主機 24小時售后服務電話:0371-60135900
  • 虛擬主機/智能建站 24小時售后服務電話:0371-60135900
  • 專注服務器托管17年
    掃掃關注-微信公眾號
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權所有  地址:鄭州市高新區翠竹街1號總部企業基地億恩大廈  法律顧問:河南亞太人律師事務所郝建鋒、杜慧月律師   京公網安備41019702002023號
      0
     
     
     
     

    0371-60135900
    7*24小時客服服務熱線