Apache 重新组装上载的文件时服务器超时

Apache 重新组装上载的文件时服务器超时,apache,tomcat,fine-uploader,Apache,Tomcat,Fine Uploader,我正在运行一个简单的服务器应用程序,从一个优秀的上传者web客户端接收上传。它基于fine uploader Java示例,在Tomcat6中运行,Apache坐在前面,使用ProxyPass路由请求。我偶尔会遇到上传率达到100%但最终失败的问题。在服务器日志和客户端日志中,我可以看到Apache在代理服务器上超时,出现502错误 在我自己尝试并看到这一点之后,我意识到问题发生在真正大的文件上。Java服务器应用程序花了超过30秒的时间将数据块重新组装到单个文件中,因此Apache将终止连接并

我正在运行一个简单的服务器应用程序,从一个优秀的上传者web客户端接收上传。它基于fine uploader Java示例,在Tomcat6中运行,Apache坐在前面,使用ProxyPass路由请求。我偶尔会遇到上传率达到100%但最终失败的问题。在服务器日志和客户端日志中,我可以看到Apache在代理服务器上超时,出现502错误

在我自己尝试并看到这一点之后,我意识到问题发生在真正大的文件上。Java服务器应用程序花了超过30秒的时间将数据块重新组装到单个文件中,因此Apache将终止连接并停止等待。我已经将Apache超时时间增加到300秒,这在很大程度上可以纠正这个问题,但潜在的问题仍然存在


有没有其他方法可以解决这个问题,这样当应用程序在服务器上组装块时,Apache和Tomcat之间的连接就不会中断?我目前正在使用2MB的块,并在想也许我应该使用更大的块大小。也许用更少的块来组装服务器代码可以更快。我可以对此进行测试,但除非加速效果显著,否则问题的可能性似乎仍然存在,只会等待足够大的上传量来触发问题。

您似乎有两种选择:

删除Apache中的超时。 将区块组合工作委托给单独的线程,并尽快返回对请求的响应。 使用后一种方法,如果区块组合操作失败,您将无法让Fine Uploader知道,但也许您可以在响应之前执行一些快速的健全性检查,例如确定是否所有区块都可访问

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


正如您所提到的,如果不需要上面的1或2,那么增加区块大小或进行其他更改以加快区块组合操作以减少超时的机会可能是合理的

我不这么认为。我明白为什么会发生超时,我正在向Fineuploader询问避免超时的策略。假设服务器真的需要10分钟来从它发送的所有区块中组装一个文件,而不是将超时配置为>10分钟,那么如何更改客户端和服务器连接?使用Fine Uploader可以做的就是更改区块大小。问题显然出在服务器上。下面@Ray没有提到的另一个选项是使用精细上传器S3。S3是一个可扩展的、可用的、低延迟的数据存储,根据我的经验,在组合多GB文件块时,它超时的可能性非常低。我不认为你可以删除超时,只是将其设置得非常高。这是我或多或少期待的答案,我只是在寻求确认。