KeepAlive简介

简单的说,keepalive就是保持连接不断开。 在我们的开发领域,有两个层面的keepalive:HTTP层面的和TCP层面的。

HTTP keepalive:
http层面的keepalive,也叫做connection reuse或persistent connection。 它指的是,在一个tcp连接上,收发多个http请求。而不是为每一次http请求/响应都建立新的TCP连接。
在HTTP 1.0协议中,没有明确的规范指明keepalive应该是怎样的。如果客户端支持keepalive,那么它在请求的header中会增加这样一个值:Connection: Keep-Alive。服务器在收到这个请求,并做出响应的时候,同样会在header中增加Connection: Keep-Alive。这样一来,这个连接就会被保持着而不被断开。当客户端要发起一个新的http请求时,将会重用这个连接。这个连接会一直保持着,直到客户端或服务器端主动断开。

在http1.1中,任何连接都被默认是持久(persistent)的,除非声明了不是。在Apache HTTP Server 2.0中,默认的timeout时间只有15s,而2.2版本则更短,为5s。较短的timeout时间的好处是,迅速传输一个web页面中的所有元素(css,图片等),而又不会因为需要更多的操作系统进程或线程而消耗系统资源。

继续阅读“KeepAlive简介”