一、http事務延遲
(1)dns解析,將客戶端輸入的主機名轉換成ip位址需要大約10s時間;
(2)建立tcp連線,1~2s
(3)傳送http報文與接收http報文。
二、tcp時延
(1)tcp連線建立握手:通常一次http事務處理的資料量不大,一次tcp握手會占用大部分時間(大約50%)
(2)tcp慢啟動擁塞控制:tcp連線會隨著網路的擁塞程度進行加快或減緩視窗大小,如果http事務有大量資料傳送,會將這些資料分組,根據擁塞演算法傳送分組。
(3)資料聚集的nagle演算法:tcp有乙個資料流介面,應用程式可以通過它將任意尺寸的資料放入tcp棧,每個tcp段中至少撞在了40個位元組的標記和首部,所以如果tcp傳送了大量包含少量資料的分組,網路效能會嚴重下降。nagle演算法試圖在傳送乙個分組之前將大量tcp資料繫結在一起,以提高網路效率。nagle演算法傳送全尺寸段(mtu=1500),只有所有其他分組都被確認才允許傳送非全尺寸的段。如果其他分組仍然在傳輸過程中,就將那部分資料快取起來,只有掛起的分組被確認或者快取中積累了足夠傳送乙個全尺寸的資料時,才會將快取的資料傳送出去。
在http協議中,小的http報文無法填滿乙個分組,有時會因為等待永遠不會到來的額外資料而產生時延。與延遲演算法之間的互動性問題:nagle演算法會阻塞資料傳送,知道有確認分組抵達為止,但確認分組自身會被延遲確認演算法延遲100~200ms。因此,http應用程式會設定引數tcp_nodelay,禁止nagle演算法,提高效能。如果這樣做,一定確保會向tcp寫入大塊資料,這樣就不會產生一堆小分組。
(4)用於捎帶確認的tcp延遲確認演算法:由於確認報文很小,為了有效利用網路,tcp將返回的確認資訊與輸出的資料分組結合在一起傳送出去。延遲演算法會在乙個特定視窗時間內將輸出確認報文放在緩衝區內,以尋找能夠捎帶它的資料分組。如果一定時間內沒有輸出資料分組,就將確認資訊放在單獨的分組中傳輸。但是http事務由請求應答行為降低了捎帶資訊的可能性,通常延遲演算法會引入大量時延。
(5)time_wait時延和埠耗盡:當某個tcp埠關閉tcp連線時,會在記憶體中維持乙個小的控制塊,用來記錄所關閉連線的ip位址和埠號,維持時間為2msl(120s),當有大量客戶端同時關閉連線,伺服器會產生大量time_wait,由於源埠有限(如6000個),連線率就限制在6000/120=500次/s,要解決這個問題,可以增加伺服器數量,也可以保持長連線。
三、提高http連線效能
(1)並性連線:通過多條tcp連線發起併發的http請求,並行連線會將時延重疊起來,加快載入速度。但並行連線不一定快,多個物件去競爭有限的頻寬,每個物件都會以較慢的速度載入,效能提公升小,而且開啟大量連線消耗很多記憶體資源,從而引發自身效能問題。但並行連線會使整個介面看起來素的快。
(2)持久連線:重用tcp連線,在事務處理完後仍然保持開啟狀態,以消除連線及關閉時延,並且已經開啟的連線可以避免慢啟動的擁塞適應階段,以便更快速地傳輸資料。
(3)管道化連線:通過共享tcp連線發起併發的http請求。在響應到達之前,可將多條請求放入佇列,當第一條請求通過網路流向另一端伺服器時,第二條第三條請求也可以傳送了。可以降低網路的環迴時間,提高效能。要求:持久化連線,確保順序回送http響應,做好連線任意時刻關閉的準備並重發管道化請求。
Http權威指南讀書筆記
1.1 http使用的是可靠的資料傳輸協議。1.3 型別 mime型別 multipurpose internet mail extension多用途網際網路郵件擴充套件 是為了解決在不同的電子郵件系統之間搬移報文時存在的問題。mime在電子郵件系統中工作得非常好,因此http也採納了它,用它來描述...
《HTTP權威指南》讀書筆記(二)
get 向伺服器請求資源 post 向伺服器請求資源並提交資料 head 請求伺服器,但僅返回首部,不包含主體內容 put 向伺服器寫入文件 向伺服器的資源中儲存資料 options 詢問伺服器支援的方法有哪些 trace 跟蹤請求,環迴 診斷 最後一站的伺服器會返回一條trace響應,包含伺服器接...
《HTTP權威指南》讀書筆記 快取
web快取是可以自動儲存常見文件副本的http裝置 包括瀏覽器?減少冗餘資料傳輸 緩解頻寬瓶頸 很多網路為本地網路客戶端提供的頻寬比為遠端伺服器提供的頻寬要寬 緩解瞬時擁塞 不會所有的請求都奔著一台伺服器去 降低距離時延 就近訪問麼 命中率 請求命中快取的比例 位元組命中率 請求命中快取的文件,其文...