这是我的应用程序云环境。 我有ELB与粘性会话 - > 2 HA代理 - > 1在jboss上托管我的应用程序的机器。
我正在处理超过1分钟的请求。我在处理请求开始时记录IP地址。 当我通过浏览器处理此请求时,我看到在1分钟和几秒后记录重复请求。如果首先请求来自HAProxy1的路由,则另一个请求从HAProxy2路由。在浏览器上,我在2.1分钟后得到HttpStatus = 0响应
我的想法是ELB正在触发此重复请求。 请帮助我验证这个假设。
当我使用Apache Http Client进行相同的请求时,我看不到重复的请求被触发。此外,我在1分钟和几秒后得到例外。 org.apache.http.NoHttpResponseException:目标服务器无法响应
请帮助我了解这里发生的事情。 -Thanks
答案 0 :(得分:0)
ELB我认为你指的是亚马逊AWS的弹性负载均衡器。
Elastic Load Balancer具有60秒的内置请求超时,无法更改。浏览器具有智能重试逻辑,因此您会看到两个请求,但您的服务器应该将它们作为两个单独的无关请求进行处理,因此这实际上会使事情变得更糟。使用httpclient,超时会导致NoHttpResponseException,并且不会使用重试。
解决方案是在服务器上提高请求的性能,或者让初始请求触发后台任务,然后是补充请求(可能使用AJAX),轮询完成。