Задать вопрос
@AlexWinner

Почему растут GC паузы у JBoss'а?

Приветствую!
Ситуация такая:
Есть 2 сервера, на каждом крутится по JBoss'у 4.2. На каждом JBoss'е вертится по приложению (пусть будут А и Б). Приложение А ходит к Б по EJB. Всё работает как надо.
Однако есть проблема:
У первого JBoss'а постепенно растёт время выполнения GC для young generation. Вскоре после запуска это время составляет 0.1 секунды, а через три дня уже 1.1 секунды. В результате чего растет нагрузка на сервер и уменьшается пропускная способность приложения.
О настройках:
Используется -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:NewSize=1024M -XX:MaxNewSize=1024M
При этом на JBoss'е с приложением Б всё хорошо.

Есть подозрение, что такой рост вызван тем, что А подключено к Б, т.к. подобная ситуация повторялась и на других JBoss'ах и приложениях.
Подскажите, пожалуйста, из-за чего могут расти эти паузы?
  • Вопрос задан
  • 2950 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
apangin
@apangin
Э-м-м… почему такой большой размер YoungGen? На то и нужен generational GC, чтоб молодое поколение было маленьким и быстрым. Какой общий размер Java Heap?
Для максимизации пропускной способности ParallelGC лучше.
Похоже на утечку памяти в самом приложении. Есть возможность запустить с -Xloggc:gc.log -XX:+PrintGC [-XX:+PrintGCDetails -XX:+Verbose]?
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@AlexWinner Автор вопроса
В итоге, все решилось добавлением в JAVA OPTS параметров -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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