apache - 重新组装上传文件时服务器超时

标签 apache tomcat fine-uploader

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

在亲自尝试并看到这个之后,我意识到这个问题出现在非常大的文件上。 Java 服务器应用程序花费超过 30 秒的时间将 block 重新组合成单​​个文件,因此 Apache 将终止连接并停止等待。我已将 Apache 超时增加到 300 秒,这应该可以在很大程度上解决问题,但潜力仍然存在。

关于处理此问题的其他方法的任何想法,以便在应用程序在服务器上组装 block 时 Apache 和 Tomcat 之间的连接不会被终止?我目前正在使用 2 MB 的 block ,并且在想也许我应该使用更大的 block 大小。也许用更少的 block 来组装服务器代码可以更快地完成。我可以对此进行测试,但除非加速非常显着,否则问题的可能性似乎仍然存在,并且只会等待足够大的上传来触发它们。

最佳答案

看起来你有两个选择:

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

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

这里 Fine Uploader 无能为力,问题出在服务器端。 Fine Uploader 发送请求后,它的工作就完成了,直到您的服务器响应。

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

关于apache - 重新组装上传文件时服务器超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23502554/

相关文章:

Ubuntu 14.04 32 位上的 Apache Mesos

php - Prestashop 后台可以工作,但前台不能。找不到网址

javascript - 内容安全策略指令 : "script-src ' none' Violation Error

javascript - FineUploader div 不会显示类

javascript - "Access is Denied"在同一域的 IE9 中的 contentDocument

java - CGI 脚本不工作

maven - 如何用Maven部署WAR到Tomcat?

tomcat - 每个页面的多个有状态 iframe 将覆盖 JSESSIONID?

java - Tomcat _localhost :port_ set globally for every system

javascript - 页面上的多个 fineupload 实例