当前位置: 首页 > 面试题库 >

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

南宫博简
2023-03-14
问题内容

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

亲自尝试并看到此问题后,我意识到该问题发生在非常大的文件中。Java服务器应用程序花费了30秒钟以上的时间才能将这些块重组为一个文件,因此Apache会终止连接并停止等待。我将Apache超时时间增加到300秒,这应该可以在很大程度上解决问题,但潜力仍然存在。

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


问题答案:

您似乎有两种选择:

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

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

Fine Uploader在这里无法执行任何操作,问题出在服务器端。Fine Uploader发送请求后,其工作将完成,直到您的服务器响应为止。

如您所述,增加块大小或进行其他更改以加快块组合操作以减少超时的机会(如果不希望使用上面的#1或#2)是合理的。



 类似资料:
  • 我正在尝试上传一个图像。当我从本地主机上进行时,它工作得很好,但当我发布它时,它从服务器上抛出一个错误: 当我使用此代码时: 错误为: System.io.DirectoryNotFoundException:找不到路径“d:\inetpub\vhosts\xx.com\httpdocs\images\sections\developer\clientlogo\demo.png”的一部分。在sys

  • 我在Localhost中正确上传我的文件,但是当我在服务器上上传我的应用程序时,他们给我错误:上传文件后服务器错误。 这是我的控制器: 在我的本地主机中,文件保存在公用文件夹中。我想用public\u html或public\u html/image将我的文件保存在我的服务中。

  • 我正在尝试将文件上载到FTP服务器 正如我在这里发现的,如何将文件上传到FTP服务器?,我有以下代码:

  • 问题内容: 我想在Docker容器中运行的Nginx中添加/删除服务器 我在Dockerfile中使用ADD命令将我的nginx.conf添加到/ etc / nginx目录中。 然后在我正在运行的nginx容器中有一个像这样的conf 如何重新启动我的Nginx以使已编辑的Nginx.conf生效? 先感谢您! 问题答案: 要重新加载NGINX配置,请运行以下命令 docker kill -s

  • 我必须从FTP服务器下载最新文件。我知道如何从我的计算机下载最新文件,但我不知道如何从FTP服务器下载。 如何从FTP服务器下载最新文件? 这是我从电脑上下载最新文件的程序 好的,使用此代码我知道最后一个文件的日期,但我如何知道这个文件的名称?????????

  • 问题内容: 在我的应用程序中,用户可以将内容上传到一个文件夹,该文件夹也可以通过 特征。我了解到,SparkJava在启动时仅从该文件夹读取一次“静态”内容,并且不知道那里的更改。是否可以要求Spark(或通过Spark的Jetty)重新加载静态文件夹中的更改? 问题答案: 搬去