Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Зависание tomcat-a


Автор: Vladus 3.2.2010, 19:35
Всем доброго времени суток.

Вопрос не по девелопменту, а по настройке энвайромента. 
Имеется приложение (спринг+хибернейт и еще по мелочи), которое крутится на томкате 5.5.27 + коннект к субд постгрис. Ява - 5.16. (ну или около того, но точно 5.*).
Собственно, крутится уже в продакшине. На одном из продакшен серверов оно ериодически (примерно раз в три недели) зависает. Перед зависанием логирует примерно такое:
Код

"http-192.168.1.224-443-Processor7" java.lang.OutOfMemoryError: PermGen space
Exception in thread "http-192.168.1.224-80-Processor25" java.lang.OutOfMemoryError: PermGen space
Exception in thread "http-192.168.1.224-80-Processor22" java.lang.OutOfMemoryError: PermGen space

Как бы понятна, в чем проблема и даже как с ней бороться. Прописываю в usr/local/etc/rc.d/tomcat (ос - FreeBSD 7.*)  строку
Код

JAVA_OPTS="$JAVA_OPTS -server -Xms512m -Xmx1024m -XX:MaxPermSize=256m"

По идее, эта штука должна решать проблему с OutOfMemoryError, однако ничего не изменилось. Сложность ситуации еще в том, что например есть другой сервер, где месяца четыре все работает без проблем. Пробую тестить на своей машине под периодически запросы (от jmetera - пытаюсь проэмулировать реальные нагрузки) - проверяю тулзой probe - задействовано не более 25 процентов памяти. 
Единственное отличие зависаемого сервера - он работает по https. 
Теоритически, может подлечить периодическое вызывание System.gc() (кварц в проекте используется), однако хотелось бы без таких мер  smile 

В общем, заранее спасибо.

Автор: dobrolub 3.2.2010, 20:28
> -XX:MaxPermSize=256m

а на "работающем" томкате какой permgen?

Автор: Vladus 3.2.2010, 21:16
dobrolub, настройки явы аналогичные, разница в железе (так сразу не могу сказать конфигурацию).

Автор: dobrolub 3.2.2010, 21:49
хм..outOfMemory по permGen возможно в двух случаях:
- много классов (скомпилированный код помещается в пермген)
- classloader leak. Когда отработанные класс-лоадеры не подчищаются

Если дать ему побольше чем 256 и, если ошибки полезут, наверняка classloader leak.

Автор: Vladus 3.2.2010, 22:10
dobrolub, большое спасибо. Попробую дать больше, то про результаты узнаю примерно через три недели  smile 
А в случае classloader leak, какие предполагаются методы решения?

Автор: dobrolub 3.2.2010, 22:22
Поискать какие класслоадеры являются проблемой с помощью всяких примочек типа jmap, и посмотреть есть ли проблемы у версий библиотек попавших под подозрение из за большого количества инстансов класслоадеров.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)