客户端一旦连上代理,TCP 连接超时就已经完成了它的任务。接下来等待完整的 CONNECT 应答,可能由另一个定时器负责。

代理可能仍在连接上游、交换认证消息,或在等待另一项服务。网站的正常响应还没有开始。

最后完成的步骤还在等待什么?
TCP 已连接到代理代理握手,包括接受 CONNECT
CONNECT 已被接受目标使用 TLS 时的目的地 TLS
目的地请求已发送目的地的响应

找出连接器读写该握手期间处于活动状态的定时器。名为 “response timeout” 的属性可能只在路由建立之后才生效。在 HttpClient 5 中,要区分 ConnectionConfig 及其套接字超时、TLS 握手配置,以及请求级的响应超时。请通过实际客户端所用的管理器来应用相应的连接配置。旧版 Apache HttpClient 使用不同的 API,因此旧代码片段并不是这些职责的可靠对照。

最终被 CONNECT 拒绝,仍应视为代理的应答。应答成功之后 TLS 卡住,属于另一个失败阶段。「TCP 已连接;在建立截止时间之前没有完整的 CONNECT 应答」比笼统地说代理超时更准确地描述了问题。

总体截止时间可以与这些阶段性限制一起约束调用方的等待。当它到期时,先通过客户端支持的生存期取消或关闭该操作,再让下一次尝试消耗连接容量。

相关文章