2011-01-12 2 views
2

EDIT - так посмотрел на Cache # 15 и MemoryStore # 9 в JVisualVM. Оказывается, это кеш запросов. Надеется, сбросив конфигурацию кэша в конфе, что ограничивает кэш запросов менее 10k элементов (по умолчанию) будет решить эту проблему ...анализ проблемы с памятью


Мы имеем приложение Grails (v1.2.0) развернутую на TOMCAT ого. Опытался сбой OOM. Получил кучу кучи и начал анализировать его в JVisualVM. Это то, что я вижу alt text

и этого alt text

так что много Ehcache вещи, и, безусловно, большое количество байт и символьных массивов. Я пробовал googling вокруг «grails memory leak ehcache», но ничего окончательного не происходит. Кто-нибудь видел какие-либо проблемы, подобные этому, или имел какое-либо представление о том, что может быть причиной этого? Может быть, это неправильно сконфигурированный ehcache?

Мы используем различные плагины (acegi, quartz, mail, background-thread), все последние версии FOR grails версии 1.2.0.

EDIT - еще информация

начиная кота со следующим

-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xms1024m -Xmx2048m -XX:MaxPermSize=256m -d64 -server -XX:+HeapDumpOnOutOfMemoryError -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled -XX:+UseConcMarkSweepGC 

и ошибка

java.lang.OutOfMemoryError: Java heap space 

Интересно, что мы использовали, чтобы получить ошибки, связанные завивка поколения пространства, но когда i, обновленный до конфигурации Java, показанной выше, ошибки пространства памяти исчезли.

+0

Сколько памяти вы отдаете куче и PermGen? – Davidann

+0

У вас есть монитор EHCache подключен? что большая часть памяти, вероятно, будет связана с отсутствием конфигурации EHCache. Посмотрите, есть ли какой-то кеш, который может быть слишком большой. Может быть, установить максимальное количество элементов и TTL для элементов кеша. – Sean

+0

@sean мы определенно используем кеш в сопоставлении GORM, но не имеем централизованного конфигуратора ehcache. возможно, именно так. Будет ли TTL по умолчанию навсегда? Будет ли он продолжать кешировать объекты снова и снова? – hvgotcodes

ответ

2

Нормально иметь много строк и char []. Я бы попытался исправить конфигурацию ehcache ... очевидно, вы много кэшируете. Есть опции, которые выгружают кеш на диск, возможно, это решение для вас.

EDIT: PermGen уходит из-за -XX:MaxPermSize=256m, что в значительной степени.

+0

не будет настраивать ehcache, чтобы вызвать экземпляры recache или позволить кешу расти неограниченно? – hvgotcodes

+0

Зависит от того, как вы его настраиваете. И я предположил, что вы перезагрузите сервер после настройки. – Daniel

1

Возможно, вы исчерпали пространство перм, а не кучу.

Запишите свой GC в файл и ссылку и отправьте назад свои аргументы JVM.

0

Вы используете Grails 1.2.0 или 1.2.5 (последняя версия 1.2.x)? Новейшая стабильная версия 1.3.6. Я предполагаю, что проблема заключается в неправильной настройке ehcache.

+0

1.2.0. Я попытаюсь добавить ehcache.xml в conf. Мне любопытно, какое поведение является по умолчанию без этого файла. – hvgotcodes

Смежные вопросы