什么是空闲的http连接?

时间:2014-06-11 09:44:44

标签: http httpurlconnection

我正在使用http连接并使用MultiThreadedHttpConnectionManager和httpClient。

出于我的目的,我使用以下方法在1ms后关闭所有空闲连接:closeIdleConnections(1)

我想知道什么被认为是"闲置连接"在http?似乎等待答案不是空闲连接。

此致

2 个答案:

答案 0 :(得分:0)

HTTP(1.1)指定连接应在任何一方明确关闭之前保持打开状态。除此之外,规范仅提供策略的一个示例,建议使用超时值,超过该超时值应关闭非活动(空闲)连接。连接保持打开,直到下一个HTTP请求减少延迟和TCP连接建立开销。但是,空闲打开的TCP连接会占用套接字和缓冲区空间。

摘自RFC 7230:

  

6.5。失败和超时

     

服务器通常会有一些超时值,超过这个值,它们将不再维持非活动连接。代理服务器可能会使此值更高,因为客户端可能会通过同一服务器建立更多连接。持久连接的使用对客户端或服务器的超时长度(或存在)没有要求。

     

当客户端或服务器希望超时时,应该在传输连接上发出正常关闭。客户和服务器应该经常关注运输关闭的另一侧,并在适当时对其进行响应。如果客户端或服务器没有及时检测到另一方的关闭,则可能导致网络上不必要的资源消耗。

     

客户端,服务器或代理可以随时关闭传输连接。例如,客户端可能已经开始在服务器决定关闭“空闲”连接的同时发送新请求。从服务器的角度来看,连接在空闲时关闭,但从客户端的角度来看,请求正在进行中。

答案 1 :(得分:0)

通过研究源代码,在HttpClient MultiThreadedHttpConnectionManager实现中,当池中的连接超过idleTime时,连接被简单地视为空闲。 idleTime作为参数传递给方法closeIdleConnections(idleTime)。