Struts Upload Slow Performance - PullRequest
       7

Struts Upload Slow Performance

2 голосов
/ 13 апреля 2009

У меня есть веб-приложение Struts 1, которому нужно загружать довольно большие файлы (> 50 МБ) с клиента на сервер. В настоящее время я использую встроенный org.apache.struts.upload.DiskMultipartRequestHandler для обработки запросов HTTP POST multipart / form-data. Он работает правильно, но также очень и очень медленно, загружая со скоростью около 100 Кбайт в секунду.

Загрузка одинаковых больших файлов с сервера на клиент происходит более чем в 10 раз быстрее. Я не думаю, что это разница между скоростями загрузки и загрузки моего интернет-провайдера, потому что использование простого FTP-клиента для передачи файла на тот же сервер занимает менее 1/3 времени.

Я смотрел на замену встроенного DiskMultipartRequestHandler более новым пакетом org.apache.commons.fileupload, но я не уверен, как изменить это для создания MultipartRequestHandler, который требуется для Struts 1.

Баранд прокомментировал ниже, что в файле web.xml может быть установлен параметр 'bufferSize'. Я увеличил размер буфера до 100 Кбайт, но это не улучшило производительность. Глядя на реализацию DiskMultipartRequestHandler, я подозреваю, что его производительность может быть ограничена, потому что он читает поток по одному байту за раз, ища пограничные символы из нескольких частей.

Кто-нибудь еще использует Struts для загрузки больших файлов?

Кто-нибудь настраивал DiskMultipartRequestHandler по умолчанию, поставляемый со Struts 1?

Нужно ли быть более терпеливым при загрузке больших файлов? : -)

Ответы [ 2 ]

2 голосов
/ 14 апреля 2009

Страница StrutsFileUpload в вики Apache содержит набор параметров конфигурации, которые вы можете использовать. Для меня выделяется размер буфера по умолчанию 4096 байт. Если вы еще этого не сделали, попробуйте установить его на что-то намного большее (но не слишком большое, поскольку буфер выделяется для каждой загрузки). Значение 2MB кажется разумным. Я подозреваю, что это значительно улучшит скорость загрузки.

1 голос
/ 16 апреля 2009

Используйте Apache Commons, это дает больше гибкости для загрузки файла. Мы можем настроить размер загружаемого файла (максимальный размер файла) и временное местоположение файла для замены файла (это повышает производительность). пожалуйста, перейдите по этой ссылке http://commons.apache.org/fileupload/using.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...