Настройка памяти JVM и сборки мусора
Управление памятью в среде PAS (Apache Tomcat) и процесс сборки мусора являются ключевыми аспектами оптимизации производительности. Apache Tomcat может функционировать нестабильно при недостатке свободного пространства в областях heap и permgen. Для обеспечения доступности памяти необходимо регулярно инициировать процесс сборки мусора, который освобождает неиспользуемые ресурсы. Однако, каждый запуск сборщика мусора приостанавливает выполнение других потоков JVM, включая обработку клиентских HTTP-запросов. Если частота запусков сборщика мусора слишком низкая, накопление неиспользуемой памяти может привести к увеличению времени выполнения операций сборки мусора и, как следствие, к задержкам в обработке клиентских запросов. В случае слишком частых запусков сборщика мусора происходит излишнее потребление процессорного времени на проверку всей памяти, что также негативно сказывается на времени отклика системы.
Основная цель заключается в предоставлении PAS for OpenEdge достаточного объема памяти в областях heap и permgen для обработки загрузки веб-приложений, выделения ресурсов для выполнения приложений и одновременного обслуживания клиентских запросов, а также в минимизации времени, необходимого для выполнения операций сборки мусора.
На использование памяти оказывают влияние следующие факторы:
- Количество и типы развернутых веб-приложений
- Размер и конфигурация пула потоков для обработки HTTP-запросов
- Объем и количество одновременных запросов, а также объем передаваемых данных
Для настройки параметров JVM в файле конфигурации /conf/jvm.properties рекомендуется использовать следующие параметры:
Свойство | По умолчанию | Описание |
-Xms<size> | 512m | Начальный размер кучи Java |
-Xmx<size> | 1024m | Максимальный размер кучи Java |
-Xss<size> | 1024k | Размер стека потоков Java |
-XX:PermSize | 64m | Начальный объем памяти permgen |
-XX:MaxPermSize | 128m | Максимальный объем памяти permgen |
-XX:NewSize | 64m | Начальное пространство, используемое для кратковременных объектов, и, косвенно, частота выполнения сборки мусора |
-XX:MaxNewSize | 128m | Максимальное пространство, используемое для кратковременных объектов |
-XX+DisableExplicitGC | — | Отключить явную сборку мусора |
Советы по настройке:
- Увеличение максимального объема памяти в области heap (параметр -Xmx) для снижения частоты запусков сборщика мусора
- Установление начального объема памяти в области heap равным максимальному объему (параметры -Xms = -Xmx) для минимизации перераспределения памяти
- Настройка начального и максимального объема памяти в области permgen (параметры -XX:PermSize = -XX:MaxPermSize) для предотвращения ошибок, связанных с нехваткой памяти в этой области
- Оптимизация размера стека JVM (параметр -Xss) для высвобождения памяти, используемой для heap и permgen
- Увеличение объема памяти в области permgen при возникновении ошибок, связанных с нехваткой памяти (ошибка out-of-permgen-space)
Конфигурация PAS for OpenEdge по умолчанию предоставляет базовую настройку, которая может быть адаптирована в зависимости от комбинации OpenEdge и используемых сторонних веб-приложений.