AWS Loadbalancer 在发送完整的 http 响应之前终止 http 调用

AWS Loadbalancer terminating http call before complete http response is sent

我们正在对 PCF 环境中托管的 spring 启动应用程序进行 REST 调用。我们的应用程序前面有一个 AWS 负载均衡器来处理流量管理。 我们使用 apache 文件上传库 [https://commons.apache.org/proper/commons-fileupload/] 以流方式处理 http 请求。在处理请求时,我们会立即发回响应,而无需等待整个请求到达。 http 请求的大小通常在 100 MB 的范围内。

此实施在中间没有 AWS 负载均衡器的情况下工作正常。当 AWS 负载均衡器存在时,它会在发送几个字节的响应后终止 http 调用。 如果我们将响应发送延迟到服务器端收到整个请求,请求就会顺利通过。 如果 http 请求的大小很小,那么实现也可以正常工作。

如果我们在收到完整的 http 请求之前开始发送 http 响应,知道为什么 AWS 负载均衡器会终止 http 调用。

我假设您使用的是应用程序负载均衡器,但是我建议您使用网络负载均衡器,经典的也可以工作,因为它们比应用程序本地均衡器为您的请求提供更多的透明度,还推荐用于 API 实施

如果这仍然不能解决您的问题,请考虑实施 HA 代理 LB

https://www.loadbalancer.org/blog/transparent-load-balancing-with-haproxy-on-amazon-ec2/