当前位置: 首页 > 知识库问答 >
问题:

使用浏览器时触发多个请求,但使用java httpClient时不会

柯镜
2023-03-14

这是我的应用程序云环境。我有ELB和sticky session-

我正在处理一个需要1分钟以上的请求。我在处理请求开始时记录IP地址。当我通过浏览器处理这个请求时,我看到重复的请求在1分几秒后被记录下来。如果首先从HAProxy1请求路由,则另一个请求从HAProxy2html" target="_blank">路由。在浏览器上,我在2.1分钟后得到HttpStatus=0响应

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

当我将Apache Http客户端用于相同的请求时,我没有看到重复的请求被触发。此外,我在1分几秒钟后得到异常。org.apache.http.NoHttp响应异常:目标服务器未能响应

-请帮我弄明白这里发生了什么-谢谢

共有1个答案

费辰阳
2023-03-14

通过ELB,我假设您指的是Amazon AWS的弹性负载平衡器。

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

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

 类似资料:
  • 问题内容: 我正在编写一个Web应用程序,该应用程序使用AJAX检索大量数据,该AJAX基本上根据用户单击的按钮修改了加载的页面(假设单击button1会将页面从state0转到state1,依此类推。) 此外,如果将按钮号作为GET变量传递给服务器,则服务器将返回正确状态的页面。 不用说,后退/前进浏览器按钮不起作用,因为在通过AJAX完成状态更改期间URL不会更改。 所以,我的问题是,如何使浏

  • 我正在使用jQuery的方法向我的Elastic的API发出请求。 在查询中传递参数时,一切都很好: 在正文(json)中传递参数时,问题开始出现: 浏览器(Chrome)不发送请求,而是发送请求。 阅读jQuery的留档我看到: 对于跨域请求,将内容类型设置为Application/x-www-form-urlencoded、multipart/form-data或text/平原以外的任何内容都

  • 在我的php文件中,我有以下内容来创建一个带有FPDF库的PDF: 但是请求是响应这个,而不是打开一个保存对话框来保存我的PDF。 %PDF-1.3 3 0 obj<>endobj 4 0 obj<>stream x 3 R@2π35 W(çR qπw 3 t04多30 pispéz*[(hx·ääää+çó)·(j*dé7 w endstream endobj 1 0 obj /xobject<

  • 以下是Chrome使用的头(从DevTools获得): 接受:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8 接受编码:gzip、deflate、sdch 接受语言:en-us,en;q=0.8 授权:协商TLRMTVNTUAADAAAAAAAAAYAIOAAABKAWQBOGAAAAAWADABYA

  • 问题内容: 在服务器回答请求之前,浏览器需要等待多长时间才能显示错误?这次可以无限吗? 问题答案: 如果使用的是jQuery $ .ajax调用,则可以设置timeout属性以控制请求以超时状态返回之前的时间。超时设置为毫秒,因此只需将其设置为很高的值即可。您也可以将其设置为0(表示“无限”),但我认为您应该设置一个较高的值。 注意:“无限制” 实际上是默认设置,但大多数浏览器都有默认超时值。 当

  • 我是一个刚开始的Web开发人员,主要是在Spring Boot上用java完成工作。刚刚开始熟悉javascript,现在遇到了一个问题,这个问题似乎与stackoverflow上的许多其他问题相似,但区别似乎是,使用Postman投递时一切正常,但通过javascript尝试使用浏览器时,我得到了415分。 当同一个尸体跟邮差一起投递时,得到的回应是: jackson-databind、-cor