【问题标题】:Why the stale connection check is not 100% reliable in apache httpclient connectionPool为什么过时的连接检查在 apache httpclient connectionPool 中不是 100% 可靠
【发布时间】:2020-04-16 10:03:37
【问题描述】:

在文档的2.5. Connection eviction policy 部分 connection managment doc 用于 httpclient 提到

HttpClient 尝试通过测试连接是否“陈旧”来缓解问题,因为在使用连接执行 HTTP 请求之前,它已在服务器端关闭,因此不再有效。 陈旧的连接检查并非 100% 可靠。

我只是想知道为什么不能可靠地检查陈旧的连接? 什么逻辑/TCP 构造不允许它可靠地发生?

【问题讨论】:

  • 陈旧连接测试是通过定期检查连接是否长时间处于非活动状态来完成的。显然,这意味着某些连接可能已失效但仍在使用中。
  • 因为它试图预测未来。
  • @freakish 时间段是多少...代码参考会有所帮助..
  • @Bhuvan 您在提供的链接中有代码。 IdleConnectionMonitorThread 类。

标签: java tcp apache-httpclient-4.x apache-httpcomponents


【解决方案1】:

这是微不足道的。在成功的过时检查和请求执行之间总是有一个时间窗口,无论多么短,对端端点可以关闭其端的连接并使客户端上的连接过时。

【讨论】:

  • 这样唯一的逻辑结构会阻止 100% 可靠的检查。没有其他逻辑/TCP 结构也会导致“不是 100% 可靠”?
  • @Bhuvan 过时的连接检查只不过是一个短读操作。从 TCP 的角度来看,它与任何其他读取操作完全没有区别。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多