Если только MySQL доступен, используйте команду SHOW TABLE STATUS и посмотрите на столбец Data_length для каждой таблицы, которая находится в байтах.
, Если Вы имеете другие языки в наличии на машине, сценарии в каком-либо из них, который регулярно работает (крон), проверяет дисковое свободное пространство или размер каталога базы данных, и обновляет Вас по электронной почте или иначе. Существует слишком много опций предложить конкретное решение - оно зависит от Вашей ситуации.
Ключ, вероятно, PS Perm Generation
, что составляет 99,999% (только 184 байта из 256 *** МБ *** свободно) .
Обычно я предлагаю вам дать ему больше разрешений, но вы уже дали ему 256 МБ, чего должно быть достаточно. Я предполагаю, что у вас есть утечка памяти в какой-то библиотеке генерации кода. Perm Gen в основном используется для байт-кода для классов.
Я думаю, что это не такая уж редкость для сервера приложений, который постоянно развертывается. Пространство Permgen, которое заполнено для вас, - это место, где проходят занятия. Имейте в виду, что JSP компилируются как классы Java, и когда вы меняете JSP, создается и загружается новый класс.
У нас была эта проблема, и наше решение состоит в том, чтобы периодически перезапускать сервер приложений.
Вот что я бы сделал:
Флаг -XX: SurvivorRatio
устанавливает соотношение между Рай и места выживших. Согласно документации по настройке JDK 1.5 , значение по умолчанию - 32, что дает соотношение 1:32. Это соответствует тому, что вы видите. Мне он кажется невероятно маленьким, хотя я понимаю, что только очень небольшое количество объектов должно пройти из Эдема в пространство выживших.
Итак, предполагая, что у вас много долгоживущих объектов, вам следует уменьшить коэффициент выживаемости. Риск состоит в том, что на этапе запуска у вас есть только эти долгоживущие объекты, что ограничивает размер Eden. Для тестового сервера я сомневаюсь, что это будет проблемой.
Я бы, вероятно, также уменьшил размер пространства Eden, увеличив -XX: NewRatio
(по умолчанию 3). Моя интуиция подсказывает, что для молодого поколения достаточно сотни мегабайт или около того, и вы просто увеличите стоимость сборки мусора, чтобы выделить такой большой объем пространства (т.е. объект будет жить в Эдеме слишком долго). Но это всего лишь инстинкт, и его обязательно нужно проверить для вашей среды.
И наполовину связанный комментарий после прочтения других ответов: если вы не видите ошибок из-за нехватки места для перманента, не тратьте ваше время возится с ним .
Очень легко получить утечку из ClassLoader - все, что нужно, - это один объект, загруженный через ClassLoader, на который ссылается объект, не загруженный им. Постоянно повторно развертываемое приложение затем быстро заполнит PermGenSpace.
В этой статье объясняется, на что следует обращать внимание, а в последующем описывается, как диагностировать и устранять проблему.