什么是空闲的http连接?

问题描述 投票:0回答:2

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

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

我想知道在http中什么被视为“空闲连接”?似乎等待答案不是空闲连接。

问候,

http httpurlconnection
2个回答
0
投票

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

摘自RFC 7230:

6.5。故障和超时

服务器通常将具有一些超时值,超过该值它们将不再维护无效连接。代理服务器可能使此值更高,因为客户端可能会通过同一服务器建立更多连接。使用持久性连接对客户端或服务器的超时时间(或存在时间)没有要求。

当客户端或服务器希望超时时,应在传输连接上正常关闭。客户端和服务器都应经常监视传输的另一端,并做出适当的响应。如果客户端或服务器未及时检测到另一方的关闭,则可能导致网络上不必要的资源消耗。

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.