Загрузка файла Grails: утечка памяти Tomcat - PullRequest
1 голос
/ 19 сентября 2011

При загрузке файлов мы замечаем значительное использование ОЗУ Я очень ожидаю этого, но скорость освобождения памяти кажется довольно медленной. И это вызывает замедление всей системы, очевидно, когда ОЗУ становится слишком мало.

Можно ли что-нибудь сделать, кроме добавления ОЗУ, чтобы улучшить общую производительность и использование ОЗУ при загрузке файлов или скорость, с которой объекты собираются в GC после завершения загрузки? Настройки сервера в Tomcat6? Что-то в самом Grails?

1 Ответ

0 голосов
/ 21 сентября 2011

Как вы справляетесь с загрузкой файлов, как описано в руководстве Grails? Это может быть недостаточно для вас, если вы ожидаете несколько одновременных загрузок файлов (значительного размера), которые занимают очень много памяти.

Мне кажется, что вы хотите, чтобы ваше приложение сохраняло загруженный контент на диске, а не оставляло его в памяти (до того, как оно передает контент на ваш контроллер)

Grails использует Commons Fileupload под капотом. В вашем случае, возможно, более практично написать контроллер, который выполняет обработку немного сложнее, чем обычный метод grails. Может быть, вам нужен API streaming или обычный способ (прокрутите вниз до «Очистка ресурса»), но с дисковым хранилищем вместо памяти. Я думаю, что вы можете просто использовать код на этой странице в вашем контроллере. Загрузка файла Commons уже находится на вашем пути к классам

...