0

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

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

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

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

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

4

1 回答 1

0

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

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

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

于 2013-08-27T18:19:43.643 回答