2009年11月13日星期五

[转]HTTP长连接

File:HTTP persistent connection.svg

HTTP_persistent_connection.svg

 

keepalive的时间范围内,这些http请求共用同一个TCP connection. 如果keepalive为off的话,则每次http请求都需要新建tcp connection

 

摘自wikipedia:

HTTP persistent connections, also called HTTP keep-alive, or HTTP connection reuse, is the idea of using the same TCP connection to send and receive multiple HTTP requests/responses, as opposed to opening a new connection for every single request/response pair.

Advantages
less CPU and memory usage (because fewer connections are open simultaneously)
enables HTTP pipelining of requests and responses
reduced network congestion (fewer TCP connections)
reduced latency in subsequent requests (no handshaking)
errors can be reported without the penalty of closing the TCP connection

Java应用

client用apache的commons-httpclient来执行method 。
用 method.setRequestHeader("Connection" , "Keep-Alive" or "close") 来控制是否保持连接。

常用的apache、resin、tomcat等都有相关的配置是否支持keep-alive

tomcat中可以设置:maxKeepAliveRequests

The maximum number of HTTP requests which can be pipelined until the connection is closed by the server. Setting this attribute to 1 will disable HTTP/1.0 keep-alive, as well as HTTP/1.1 keep-alive and pipelining. Setting this to -1 will allow an unlimited amount of pipelined or keep-alive HTTP requests. If not specified, this attribute is set to 100.

没有评论: