我有一个带有以下注释的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%的文件上传量,但是我们的确得到了更大的文件,在 25-30mb 范围内。我们甚至正在考虑将最大数量增加到 50mb

我可以在 MultipartConfig 上找到的每篇文章都描述了 fileSizeThreshold 做什么,但没有描述如何/何时使用...有人对上段中的文件要求有任何建议吗?如果有所不同,我们在Ubuntu盒子上运行glassfish4。

提前致谢!

最佳答案

fileSizeThreshold的想法有点误导,因为它是一种直接的机制,但是它的实际用例似乎很少见,以至于使您怀疑您是否正确地理解了该属性。

您的说法是正确的,这是将文件持久化到磁盘的时间。请注意,默认情况下,该值为0,因此默认情况下,文件将被写入磁盘,这大概是您希望的99%的时间。

当文件生命周期短且输入率很高时,fileSizeThreshold会派上用场,这样将文件持久存储到磁盘上会产生很大的性能开销。您可以将此参数设置为大于0的值,以节省一些磁盘I/O。

具有阈值而不是始终将文件保留在内存中的 boolean 值之所以重要,是为了给自己提供一个安全网,以免保留太大的文件(出于显而易见的原因)。

关于java - 有关MultipartConfig fileSizeThreshold的建议,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34321046/

10-10 02:30