Приложение Java Java EE 6, работающее на JBoss 6, недавно начало иметь проблемы с памятью.Как устранить проблему OutOfMemoryError в JBoss?
Ситуация
- сервер производства.
- Приложение небольшого среднего размера с использованием JPA2/Hibernate с настройками кэширования по умолчанию. ~ 170 классов.
- Размер DB ~ 1.8gb, 90% которого принадлежит двоичным данным, просто загружаемым сервлетами без какого-либо специального кэширования.
- Тайм-аут сеанса недавно был увеличен с 2-х часов до 10.
- JVM конфигурации: -Xrs -Xms1024M -Xmx1024M -XX: MaxPermSize = 512M -Dsun.rmi.dgc.client.gcInterval = 3600000 -server
- JBoss работает как сервис.
- Почти все классы контроллеров в ViewScope
Два вопроса с этими фактами в виде:
Как бы устранить этот Умес? JConsole не находит JVM, работающие как службы. В идеале я должен был бы проверять релевантные объекты, такие как сеансы, чтобы найти вора памяти.
Может ли этот OOME быть законным с увеличенным временем ожидания сеанса, а решение просто увеличить размер кучи? Приложение работает с сентября 2011 года без каких-либо проблем с памятью. Сессионный тайм-аут резко увеличился примерно два месяца назад.
К сожалению, до этого я больше не разбирался в этом вопросе, и, похоже, сейчас он разрешился.Параметр дампа кучи будет хорошим местом для начала, проблемы снова появятся, добавив VisualJVM и похоже на производственный сервер, кажется жестким. В любом случае я приму ваш ответ, так как он содержит советы по анализу кучи. –