2014-05-06 66 views
0

我正在运行一个简单的服务器应用程序来接收来自上传网络客户端的上传。它基于精细的上传器Java示例,并且在Tomcat6中运行,Apache位于它的前面,并使用ProxyPass来路由请求。我遇到偶尔的问题,上传到100%但最终失败。在服务器日志以及客户端上,我可以看到Apache在代理服务器上发生了502错误。重新组装上传文件时服务器超时

努力,看到这个自己后,我实现了真正的大文件时出现问题。 Java服务器应用程序花费了超过30秒的时间将这些块重组为一个文件,因此Apache将终止连接并停止等待。我将Apache Timeout增加到了300秒,这应该在很大程度上纠正这个问题,但潜力依然存在。

其他方式来处理这个以便当应用程序被装配在服务器上的数据块Apache和Tomcat之间的连接没有杀死任何想法?我目前正在使用2 MB大块,并且正在考虑也许我应该使用更大的块大小。组装服务器代码所需的块数量可能会更快。我可以测试,但除非加速是戏剧性的,否则似乎问题仍然存在,只会等待足够大的上传来触发它们。

+0

[错误的网关502错误使用Apache MOD \ _proxy和Tomcat](可能重复http://stackoverflow.com/questions/169453/bad-gateway-502-error-with-apache-mod-proxy-and- tomcat) –

+0

我不这么认为。我明白为什么超时正在发生,我正在要求Fineuploader提供避免它的策略。假设服务器真的需要10分钟才能从发送的所有数据块中组装文件,但将超时时间配置为> 10分钟,客户端和服务器连接如何更改? –

+0

Fine Uploader真的只能改变块大小。问题显然在服务器上。下面@Ray没有提到的另一个选择是使用Fine Uploader S3。 S3是一个可扩展的,可用的,低延迟的数据存储,根据我的经验,即使将多GB文件组合在一起时,它的超时时机也非常低。 –

回答

1

好像你有两个选择:

  1. 在Apache中清除超时。
  2. 将块组合工作委托给单独的线程,并尽快返回对请求的响应。

使用后一种方法,您将无法让Fine Uploader知道块组合操作是否失败,但也许您可以在响应之前执行一些快速的完整性检查,例如确定是否所有块都可访问。

没有什么美术上传可以在这里做,问题是服务器端。 Fine Uploader发送请求后,其作业完成,直到服务器响应。

正如您所提到的,增加块大小或进行其他更改以加快块组合操作以减少超时的可能性(如果#1或#2不是所期望的)可能是合理的。

+0

我不认为你可以删除超时,只是使其不切实际高。这是我或多或少预期只是寻求确认的答案。 –

相关问题