АЦК. Настройки СП для JAVA
По итогу разбора предоставленных файлов, рекомендуется использовать следующие параметры управления JAVA памятью:
-Xmx7g -XX:+ScavengeBeforeFullGC -XX:+TieredCompilation -XX:G1HeapRegionSize=16m -XX:+DisableExplicitGC -XX:+UseParallelGC -XX:MaxGCPauseMillis=50 -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -XX:ParallelGCThreads=4 -XX:ConcGCThreads=2
Здесь:
-XX:+UseParallelGC Сборщик мусора, работающий в параллельных потоках
-XX:+ScavengeBeforeFullGC Сначала очищает новые объекты в GC, а затем уже проводит полный цикл очистки.
-XX:+TieredCompilation Выключает компиляцию 1, 2 и 3 уровней для увеличения скорости компиляции. Сильно оптимизирует работу процессора и памяти.
Строка в командном файле \bin\start.bat будет выглядеть так:
-XX:+UseParallelGC Сборщик мусора, работающий в параллельных потоках
-XX:+ScavengeBeforeFullGC Сначала очищает новые объекты в GC, а затем уже проводит полный цикл очистки.
-XX:+TieredCompilation Выключает компиляцию 1, 2 и 3 уровней для увеличения скорости компиляции. Сильно оптимизирует работу процессора и памяти.
set _SERVER_START_SCRIPT=%JAVA_CMD% %JAVA_PARAMS% %_SERVER_DEBUG_MODE% -Dfile.class.path="%FCP%" -Dgz.log=%SERVER_PORT% -Xmx7g -XX:+ScavengeBeforeFullGC -XX:+TieredCompilation -XX:G1HeapRegionSize=16m -XX:+DisableExplicitGC -XX:+UseParallelGC -XX:MaxGCPauseMillis=50 -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -XX:ParallelGCThreads=4 -XX:ConcGCThreads=2 %BCP% com.bssys.loader.MainRunner %*
set _SERVER_START_SCRIPT=%JAVA_CMD% %JAVA_PARAMS% %_SERVER_DEBUG_MODE% -Dfile.class.path="%FCP%" -Xmx7g -XX:+ScavengeBeforeFullGC -XX:+TieredCompilation -XX:G1HeapRegionSize=16m -XX:+DisableExplicitGC -XX:+UseParallelGC -XX:MaxGCPauseMillis=50 -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -XX:ParallelGCThreads=4 -XX:ConcGCThreads=2 %BCP% com.bssys.loader.MainRunner %*
-XX:MaxGCPauseMillis=50
ОтветитьУдалитьРекомендуется быть аккуратнее. Совершенно не факт что за 50 мс (+-) возможно успешно вычистить мусор из 7 ГБ "кучи". Для того чтобы выставлять этот параметр стоит включить логирование сборщика мусора с остальными параметрами, и посмотреть сколько операций вы полняет сборщик, ну или засечь сколько будет работать одна сборка мусора. Проводить измерения нужно под нагрузкой (в случае с АЦК, это обработка реплик или загрузка выписки). После чего ориентируясь что производительность данного сборщика мусора где-то 0,5 операций в секунду, ставить корректное значение параметра.
Даже на физическом сервере с современными процессорами за 50 мс, оно не отработает. На физическом silver xeon данный параметр согласно эмпирическим вычислениям был а районе 500-700 мс. На ВМ - существенно ниже, в районе 1000 мс +-.
Чем грозит то, что он будет не успевать в заданный интервал - тем что в какой-то момент (когда преодолеет барьер количества неуспешных сборок) оно точно остановит приложение для сборки мусора. Либо будет деградация производительности СП, пока не забьется куча.