首页 > 解决方案 > Spring Boot 服务器现实多部分上传/下载大型(~1GB)文件的速度?

问题描述

我正在开发一个Spring Boot 服务器,该服务器通过HTTP多部分处理和下载大型(~1GB)文件。我禁用了 Spring 的默认多部分过滤器(按)并使用Apache FileUpload Streaming API来处理 HTTP 请求。当我开始同时上传(从邮递员)或下载(从浏览器)时,我得到的最大速度约为 40MB/s。瓶颈看起来是CPU,因为它以 40MB/s 的速度被利用(所有内核)~100% 。spring.servlet.multipart.enabled=false

我试图通过在上传后丢弃传入的 HTTP 多部分 InputStream 来@Service分析上传@Controller,但 40MB/s 的限制并没有变得更快。(我的意思是丢弃我读出流但没有将其转发到文件或其他任何东西。所以基本上只是跳过了流。)

我在Intel i7-6700HQ 处理器(4 cores 8 threads ~ 3GHz)上获得了上述性能。

我想知道我是否搞砸了,或者这是使用 Spring Boot 的限制吗?我怎样才能提高性能?Spring Boot 对于这项任务来说是一个糟糕的选择吗?

(在这里你可以看到源代码,如果你想看看它:https ://github.com/janosgats/laboschqpa.filehost )

标签: javaspring-bootfile-uploadmultipartform-datalarge-files

解决方案


推荐阅读