上传大文件会导致NoHttpResponseException

时间:2015-12-22 14:16:03

标签: linux jboss server connection-timeout

我有一个J2EE应用程序,它有一个允许上传文件的REST端点。该应用程序部署在Linux服务器上的jboss上。

当我们的服务器中的文件小于4 MB时,一切都很好,但是当我上传大文件时,我总是最终得到:

org.apache.http.NoHttpResponseException: The target server failed to respond

当我在本地进行测试时(REST客户端调用在我的机器上运行的本地服务器),一切都运行良好。我甚至可以上传10mb +,没有遇到任何例外。但是当我通过REST客户端访问linux服务器并且文件大于4mb时,我会得到NoHttpResponseException。我试过通过curl命令调用linux服务器本身的上传端点,它正在工作。

所以,我猜测这不是我的代码或jboss设置中的特定内容,而是linux服务器上的问题/配置(服务器超时设置可能?)?谁能指出我正确的方向?

所有帮助表示赞赏。如果您需要更多信息,请告诉我。谢谢!

1 个答案:

答案 0 :(得分:0)

这很可能是由于您的服务器与执行大型上传的远程客户端之间的某些网络设备或配置,如果您告诉我们通过本地curl进行的大型上传工作您的服务器和本地开发环境。

由于您尚未在应用程序代码之外描述您的设置,因此我们无法提供帮助:

  1. 您是否在请求上设置了keep-alive,并确保所有负载均衡器和类似设备都遵守请求持续时间/不杀死TCP?基于HTTP的网络设备不会产生Request Timeout响应,因此寻找TCP问题。
  2. 您是否确认本地计算机上没有严格按时间顺序排列的超时设置?您似乎不太可能从来自HTTP服务器的Request Timeout获得NO响应,但这也可能是它。
  3. 您是否可以从远程位置验证较小的请求?如果没有,那么它甚至可以像下面这样简单:
    (A)服务器上缺少状态防火墙规则
    (B)您没有绑定到服务器上的0.0.0.0等正确的网络接口,只能在环回/本地接口上绑定 (C)出站传输的无状态规则,如缺少网络ACL规则:入站但不出站