HTTTP及TCP的超時以及KEEP-ALIVE機制小結
一、HTTP的超時和Keep Alive
HTTP Keepalive 機制是http 1.1中增加的一個功能。
在HTTP 1.0中,客戶端每發起一個http 請求,等收到接收方的應答之後就斷開TCP。下一個請求再需要發送時,要重新建立TCP連接。
在HTTP 1.1中,客戶端每發起一個http請求之後,服務器可以通過keep alive的方式告知客戶端,同時保持之前建立的TCP連接。下一個http請求和應答從而能夠避免再次建連,通過已有連接繼續發送。
HTTP層的超時設置實例代碼如下,setConnectionTimeout設置建連的超時時間,setTimeout設置收到應答的超時時間:
httpClient client = new HttpClient();client.setConnectionTimeout(30000); client.setTimeout(30000);
HttpClient 4.3超時設置 - Docee
HTTP Keep-Alive詳解[轉] - huangfox - 博客園
二、TCP的超時和Keep alive的機制
TCP的數據包如果在一個RTO沒有收到應答則進行重傳,RTO的值由TCP傳輸過程中測量的RTT以及最小RTO決定。
如果一個TCP連接長期沒有數據傳輸,TCP可以通過Keep alive機制來控制和斷開連接。
tcp的keepalive的三個配置參數包括:
tcp_keepalive_time:鏈路空閑時間達到tcp_keepalive_time之後開始發送包括數據包
tcp_keepalive_probes:發了保活包數目達到tcp_keepalive_probes斷開連接
tcp_keepalive_intvl:保活數據包的發送間隔
開啟tcp keepalive需要通過應用層序開啟socket的keepalive功能。而keepalive的三個參數既可以通過系統命令sysctl進行設置,也可以通過設置socket屬性進行設置。
為什麽基於TCP的應用需要心跳包(TCP keep-alive原理分析) | Hengyunabc Blog
HTTTP及TCP的超時以及KEEP-ALIVE機制小結