java - 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 )
解决方案
推荐阅读
- python - python将0.00000077转换为科学计数法
- php - Laravel 中的自定义路由
- linux - 无法在本地网络服务器上注册 git runner
- python - 确定哪个点的子集最接近多项式
- php - 如何递归区分两个文件夹,然后复制 PHP 中的差异
- java - 使用 Java 运行时从 mysql 转储 sql 文件中检索表
- scala - 为什么 Action 变成了 Accumulator
- java - 无法运行程序“C:\Program Files\Java\jdk1.8.0_221\jre\bin\java” 目录名无效
- android - 使用 SearchView 过滤 RecyclerView 结果
- ms-access - 使用来自访问函数的值的传递查询更新数据