簡體   English   中英

與HTTP的TCP持久連接?

[英]TCP Persistent Connections with HTTP?

所以我認為,使用HTTP 1.1時,只要您正在與該服務器進行通信,TCP連接就會持續存在? 完成寫入套接字后,它如何實際工作,如何知道TCP連接? 任何形式都會很棒,我已經做過研究,但是如果沒有閱讀RFC,我找不到我想要的東西。

請參閱RFC 2616的8.1節 基本上,HTTP 1.1將所有連接視為持久連接,但是RFC的語言並沒有強制要求這種行為,因為它使用了“ SHOULD”一詞。 如果被授權,它將使用“必須”。

但是,RFC沒有詳細說明實現方式。 Wikipedia上HTTP Persistent Connection頁面可以看出,Apache的默認超時(超過此超時將返回持久連接以用於其他用途)可能只有5秒。 (盡管考慮到Apache提供的所有其他旋鈕和轉盤,這幾乎可以肯定是可配置的)。

換句話說,這意味着在短時間內向同一個地址發送大量請求,以免浪費時間打開和關閉一堆將要執行的會話。 增加此超時不是“隨意的”,因為在連接保持打開狀態時資源被占用。 在您期望有大量傳入客戶的環境中,占用這些資源可能會對性能造成致命影響。

典型的實現是HTTP服務器將有一個超時(通常稱為KeepAliveTimeout此類 ),之后它將關閉空閑連接。

如果服務器為每個連接保留線程或整個進程(例如,使用通常的mpm_prefork或mpm_worker的apache),則keepalive通常會被完全禁用或保持很短的時間(幾秒鍾)。 對於基於事件的服務器(例如nginx),每個連接使用更少的內存,可以將keepalive超時設置為更高的值(通常為一分鍾左右)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM