Я работаю на сервере 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)