Сервер Spring Boot реализует c многократную скорость загрузки / загрузки больших (~ 1 ГБ) файлов? - PullRequest
2 голосов
/ 05 апреля 2020

Я работаю на сервере Spring Boot , который обрабатывает и загружает больших (~ 1 ГБ) файлов на multipart через HTTP . Я отключил многочастный фильтр Spring по умолчанию (spring.servlet.multipart.enabled=false) и использовал Apache FileUpload Streaming API для обработки HTTP-запроса. Когда я начинаю одновременную загрузку (от почтальона) или загрузку (из браузера), я получаю максимальную сумму скорость около 40 МБ / с. Узким местом выглядит CPU , поскольку он ~ 100% используется (все ядра) со скоростью 40 МБ / с .

Я попытался профилировать загрузку, отбросив входящий HTTP-компонент InputStream в @Service после загрузки @Controller, но ограничение 40 МБ / с не стало быстрее. (я имею в виду отказ от того, что я считал поток, но не переадресовал его в файл или что-то еще. Поэтому в основном просто пропустил поток.) ​​

Я получаю вышеупомянутую производительность на Процессор Intel i7-6700HQ (4 ядра, 8 потоков ~ 3 ГГц) .

Я хочу знать, если я что-то испортил, ИЛИ это ограничение использования Spring Boot? Как я могу улучшить производительность? Является ли Spring Boot плохим выбором для это задание?

(Здесь вы можете увидеть исходный код, если посмотреть на него: https://github.com/janosgats/laboschqpa.filehost)

...