Tomcat 6 действительно нестабилен при повторном развертывании веб-приложений - PullRequest
2 голосов
/ 01 июня 2010

Знаете ли вы, как сделать его более стабильным, может быть, установить свойства, выделить память?

Всегда зависает при повторном развертывании веб-приложений, через менеджер (войны), веб-интерфейс или плагин maven.

каждый второй раз это дает PermGenSpace, без ошибок памяти и т. Д.

на моей локальной машине 3 ГБ оперативной памяти.

Похоже, что он должен быть настроен вручную для стабильной работы.

Как исправить такую ​​проблему?

Ответы [ 2 ]

6 голосов
/ 01 июня 2010

PermGenSpace ошибка возникает из-за утечки памяти во время цикла отмены развертывания / развертывания.

Развертывание приложения теоретически не должно приводить к утечке памяти, но это известная проблема, заключающаяся в том, что тонкие зависимости между объектами в разных загрузчиках классов могут вызвать утечки памяти в приложении. сервер.

A кратковременное средство - настроить память JVM (-Xms, -Xms и т. Д.) Таким образом, чтобы она не работала после 2-3 перераспределений, но после многих других , так что вам нужно реже перезапускать Tomcat.

Долгосрочное лекарство заключается в анализе причин утечки памяти. Это обычно не проблема Tomcat, ни сборка мусора, ни код приложения, а скорее развертывание различных библиотек в разных загрузчиках классов. Хорошая статья, чтобы понять эту проблему:

И вот такой вопрос, на который я предлагаю вам посмотреть, где у ОП была похожая проблема:

4 голосов
/ 01 июня 2010

Вам нужно увеличить PermGenSpace, которое может быть слишком маленьким для ваших нужд по умолчанию. Запустите Tomcat, предоставив JVM такой тип переключателя:

-XX:MaxPermSize=256m

Кроме того, вы можете увеличить максимальный размер кучи с помощью этого типа переключателя:

-Xmx1g

Вам нужно будет немного протестировать настройки, чтобы увидеть, какие именно значения вам подходят.

Эти настройки можно поместить в файл tomcat/bin/setenv.sh, например:

CATALINA_OPTS="-Xmx1g -XX:MaxPermSize=256m"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...