【问题标题】:Multiple request triggered when used browser but not when used java httpclient使用浏览器时触发多个请求,但使用 java httpclient 时未触发
【发布时间】:2012-11-05 07:47:33
【问题描述】:

这是我的应用程序云环境。 我有带有粘性会话的 ELB -> 2 HA 代理 -> 1 台机器,它们在 jboss 上托管我的应用程序。

我正在处理一个耗时超过 1 分钟的请求。我在处理请求开始时记录 IP 地址。 当我通过浏览器处理此请求时,我看到重复请求在 1 分几秒后被记录。如果第一个请求路由来自 HAProxy1,那么另一个请求路由来自 HAProxy2。在浏览器上,我在 2.1 分钟后收到 HttpStatus=0 响应

我的假设是 ELB 触发了这个重复请求。 请帮助我验证这个假设。

当我使用 Apache Http 客户端处理相同的请求时,我没有看到重复的请求被触发。我也在 1 分几秒后得到异常。 org.apache.http.NoHttpResponseException: 目标服务器响应失败

请帮助我了解这里发生了什么。 -谢谢

【问题讨论】:

    标签: browser apache-httpclient-4.x


    【解决方案1】:

    我认为 ELB 指的是 Amazon AWS 的弹性负载均衡器。

    Elastic Load Balancer 的内置请求超时时间为 60 秒,无法更改。浏览器具有智能重试逻辑,因此您会看到两个请求,但您的服务器应该将它们作为两个独立的不相关请求进行处理,因此这实际上使事情变得更糟。使用httpclient,超时导致NoHttpResponseException,不使用重试。

    解决方案是提高您的请求在服务器上的性能,或者让初始请求触发后台任务,然后触发一个补充请求(可能使用 AJAX)轮询完成。

    【讨论】:

      猜你喜欢
      • 2019-08-10
      • 2015-12-30
      • 1970-01-01
      • 2018-04-12
      • 2018-10-26
      • 1970-01-01
      • 1970-01-01
      • 2021-09-27
      • 2023-03-28
      相关资源
      最近更新 更多