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);
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属性进行设置。