什么是空闲 http 连接?

Blb*_*lbl 4 http httpurlconnection

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

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

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

问候,

hrb*_*str 5

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

摘自 RFC 7230:

6.5. 失败和超时

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

当客户端或服务器希望超时时,它应该在传输连接上发出优雅的关闭消息。客户端和服务器都应该不断监视传输的另一端,并适当地做出响应。如果客户端或服务器没有及时检测到对方的关闭,可能会导致网络上不必要的资源消耗。

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