java - Struts 上传性能缓慢

标签 java struts

我有一个 Struts 1 Web 应用程序,需要将相当大的文件(> 50 MB)从客户端上传到服务器。我目前正在使用其内置的 org.apache.struts.upload.DiskMultipartRequestHandler 来处理 HTTP POST 多部分/表单数据请求。它工作正常,但也非常非常慢,上传速度约为每秒 100 KB。

从服务器下载相同的大文件到客户端的速度快了 10 倍以上。我不认为这只是我的 ISP 的上传和下载速度之间的差异,因为使用简单的 FTP 客户端将文件传输到同一服务器只需不到 1/3 的时间。

我考虑过用较新的 org.apache.commons.fileupload 包替换内置的 DiskMultipartRequestHandler,但我不确定如何修改它来创建 Struts 1 需要的 MultipartRequestHandler。

Barend 在下面评论说,有一个“bufferSize”参数可以在 web.xml 中设置。我将缓冲区的大小增加到 100 KB,但并没有提高性能。查看 DiskMultipartRequestHandler 的实现,我怀疑它的性能可能受到限制,因为它一次读取一个字节以查找多部分边界字符。

还有人使用 Struts 上传大文件吗?

有人定制过 Struts 1 提供的默认 DiskMultipartRequestHandler 吗?

上传大文件时我是否需要更加耐心? :-)

最佳答案

页面StrutsFileUpload Apache wiki 上包含大量可以使用的配置设置。对我来说最突出的是默认缓冲区大小 4096 字节。如果您还没有这样做,请尝试将其设置为更大的值(但不要太大,因为为每次上传分配了缓冲区)。 2MB 的值似乎比较合理。我怀疑这会大大提高上传速度。

关于java - Struts 上传性能缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/745122/

相关文章:

java - 尽管用户已登录,Android firebase 数据库权限仍被拒绝

java - Tiles 不会解析 Struts 标签

angularjs - 如何在 Struts 1.x 中使用 AngularJS

java - Struts web项目中Applet加载错误

java - 识别文本文件中的重复数字

java - 多线程将相同的内容写入同一个文件?

java - WireMock 播放和录音可以同时使用吗?

java - 带有欢迎文件的嵌入式 Jetty REST 服务

java - 拒绝直接访问jsp页面

java - 如何修改struts中的html...链接到jsp