关于MultipartConfig fileSizeThreshold的建议

时间:2015-12-16 20:02:58

标签: java java-ee glassfish multipartconfig

我有一个带有以下注释的Servlet,非常基本。

@MultipartConfig
 (
      fileSizeThreshold = 1024 * 1024 * 1, // 1 MB
      maxFileSize = 1024 * 1024 * 30, // 30 MB
      maxRequestSize = 1024 * 1024 * 35, // 35 MB
      location = "/somewhere"
  )

我的帖子的原因是设置 fileSizeThreshold 。据我了解, fileSizeThreshold 设置在将文件写入磁盘之前将文件保留在内存中的阈值。我知道默认值为0,并且在上面的代码片段中,一旦达到传入文件的1mb,就会开始将其写入磁盘。

此设置的重点是什么?在写入之前增加内存中文件的数量是否有优势?

我有一个应用程序 80%的文件上传<5mb ,但我们确实在 25-30mb 范围内获得更大的文件。我们甚至考虑将最大值增加到 50mb

我可以在 MultipartConfig 上找到的每篇文章都描述 fileSizeThreshold 的内容,但不知道如何/何时使用它...有没有人给出任何建议给出文件要求前一段?如果它有所不同,我们在ubuntu盒子上运行glassfish4。

提前致谢!

1 个答案:

答案 0 :(得分:2)

fileSizeThreshold的想法有点误导,因为它是一种简单的机制,但它的实际用例似乎非常罕见,它让你质疑你是否正确理解了属性。

你说这是将文件保存到磁盘的位置是正确的。请注意,默认情况下,这是0,因此默认文件将被写入磁盘,这可能是99%的时间。

fileSizeThreshold在您的文件寿命较短且速度很快时会派上用场,以便将文件保存到磁盘会导致显着的性能开销。您可以将此参数设置为大于0的值以自行保存某些磁盘i / o。

具有阈值的原因与具有总是将文件保留在内存中的布尔值相比的原因是为了给自己一个安全网,以便不保留内存中太大的文件(出于显而易见的原因)。