Уменьшение оставшегося в живых располагает вывод с интервалами к непрерывному полному GC

Если только MySQL доступен, используйте команду SHOW TABLE STATUS и посмотрите на столбец Data_length для каждой таблицы, которая находится в байтах.

, Если Вы имеете другие языки в наличии на машине, сценарии в каком-либо из них, который регулярно работает (крон), проверяет дисковое свободное пространство или размер каталога базы данных, и обновляет Вас по электронной почте или иначе. Существует слишком много опций предложить конкретное решение - оно зависит от Вашей ситуации.

5
задан Cœur 7 March 2019 в 06:30
поделиться

4 ответа

Ключ, вероятно, PS Perm Generation , что составляет 99,999% (только 184 байта из 256 *** МБ *** свободно) .

Обычно я предлагаю вам дать ему больше разрешений, но вы уже дали ему 256 МБ, чего должно быть достаточно. Я предполагаю, что у вас есть утечка памяти в какой-то библиотеке генерации кода. Perm Gen в основном используется для байт-кода для классов.

12
ответ дан 18 December 2019 в 06:12
поделиться

Я думаю, что это не такая уж редкость для сервера приложений, который постоянно развертывается. Пространство Permgen, которое заполнено для вас, - это место, где проходят занятия. Имейте в виду, что JSP компилируются как классы Java, и когда вы меняете JSP, создается и загружается новый класс.

У нас была эта проблема, и наше решение состоит в том, чтобы периодически перезапускать сервер приложений.

Вот что я бы сделал:

  1. Разверните Hudson на отдельном сервере от вашего промежуточного сервера
  2. Настройте Hudson на периодический перезапуск вашего промежуточного сервера. Вы можете сделать это одним из двух способов:
    1. Периодически перезапускайтесь (например, каждую ночь в полночь, независимо от активности сборки); или
    2. Задание развертывания веб-приложения запускает задание перезапуска сервера. Если вы сделаете это, убедитесь, что для задания перезапуска существует действительно длительный период молчания (мы установили его на 2 часа), чтобы вы не получали перезапуск сервера для каждой сборки (то есть, если два развертывания веб-приложения происходят в течение 2 часов. , они вызовут перезапуск только одного сервера).
4
ответ дан 18 December 2019 в 06:12
поделиться

Флаг -XX: SurvivorRatio устанавливает соотношение между Рай и места выживших. Согласно документации по настройке JDK 1.5 , значение по умолчанию - 32, что дает соотношение 1:32. Это соответствует тому, что вы видите. Мне он кажется невероятно маленьким, хотя я понимаю, что только очень небольшое количество объектов должно пройти из Эдема в пространство выживших.

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

Я бы, вероятно, также уменьшил размер пространства Eden, увеличив -XX: NewRatio (по умолчанию 3). Моя интуиция подсказывает, что для молодого поколения достаточно сотни мегабайт или около того, и вы просто увеличите стоимость сборки мусора, чтобы выделить такой большой объем пространства (т.е. объект будет жить в Эдеме слишком долго). Но это всего лишь инстинкт, и его обязательно нужно проверить для вашей среды.


И наполовину связанный комментарий после прочтения других ответов: если вы не видите ошибок из-за нехватки места для перманента, не тратьте ваше время возится с ним .

4
ответ дан 18 December 2019 в 06:12
поделиться

Очень легко получить утечку из ClassLoader - все, что нужно, - это один объект, загруженный через ClassLoader, на который ссылается объект, не загруженный им. Постоянно повторно развертываемое приложение затем быстро заполнит PermGenSpace.

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

6
ответ дан 18 December 2019 в 06:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: