【问题标题】:apache http client: connection timeout for "no route to host" caseapache http客户端:“无路由到主机”情况的连接超时
【发布时间】:2014-08-12 00:59:56
【问题描述】:

我遇到了apache http client (4.2.1)连接超时的问题,如果主机存在但没有及时响应,则超时关闭连接(一切如预期),但如果没有这样的主机,客户端会等待更长的时间超出预期(大约 12 秒,而不是配置中指定的 5 秒)。最终这会导致 NoRouteToHostException,可能是由于特定的网络问题(当我试图在另一个网络中重现此问题时,我在等待 5 秒后遇到了套接字读取超时异常,正如预期的那样)。 我正在使用以下超时设置:

  • http.socket.timeout = 5 秒
  • http.connection.timeout = 5 秒

感谢任何想法。

更新

如果有人遇到过同样的问题,很可能是由客户端执行的连接重试引起的。解决问题后我会更新这篇文章

更新2

最终我已经能够解决这个问题。如果没有明确指定请求重试处理程序,则该问题是由 AbstractHttpClient(即 DefaultHttpClient 的父级)使用的 DefaultHttpRequestRetryHandler 执行的连接重试引起的。因此,如果您想摆脱它,只需指定重试次数较少的请求重试处理程序

【问题讨论】:

    标签: java apache-httpclient-4.x


    【解决方案1】:

    最终我已经能够解决这个问题。如果没有明确指定请求重试处理程序,则该问题是由 AbstractHttpClient(即 DefaultHttpClient 的父级)使用的 DefaultHttpRequestRetryHandler 执行的连接重试引起的。因此,如果您想摆脱它,只需指定重试次数较少的请求重试处理程序

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-28
      相关资源
      最近更新 更多