@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'ах и приложениях.
Подскажите, пожалуйста, из-за чего могут расти эти паузы?
  • Вопрос задан
  • 2901 просмотр
Решения вопроса 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.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Zaycev.net Челябинск
от 65 000 до 100 000 руб.
timebook Нижний Новгород
от 120 000 руб.
Innopolis City Иннополис
от 80 000 до 150 000 руб.