de-vraag
  • Вопросы
  • Метки
  • Пользователи
Оповещения
Вознаграждения
Регистрация
После регистрации, сможете получать уведомления об ответах и комментариях на Ваши вопросы.
Вход
Если у Вас уже есть аккаунт, войдите чтобы проверить новые уведомления.
Тут будут вознаграждения за добавленные вопросы, ответы и комментарий.
Дополнительно
Источник
Редактировать
 cherouvim
cherouvim
Вопрос

Полный GC становится очень частым

У меня есть Java webapp, работающий на одном экземпляре tomcat. Во время пиков webapp обслуживает около 30 страниц в секунду и обычно около 15.

Моя среда:

O/S: SUSE Linux Enterprise Server 10 (x86_64)
RAM: 16GB

server: Tomcat 6.0.20
JVM: Java HotSpot(TM) 64-Bit Server VM 1.6.0_14
JVM options:
CATALINA_OPTS="-Xms512m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m
               -XX:+UseParallelGC
               -Djava.awt.headless=true
               -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps"
JAVA_OPTS="-server"

Спустя пару дней работоспособности Full GC начинает происходить чаще, и это становится серьезной проблемой для доступности приложения. После перезагрузки tomcat проблема исчезает, но, конечно, возвращается через 5-10 или 30 дней (несовместимо).

The Full GC log before and after a restart is at http://pastebin.com/raw.php?i=4NtkNXmi

Он показывает журнал перед перезагрузкой в ​​течение 6,6 дней, когда приложение страдает, потому что Full GC требуется 2,5 секунды и происходит каждые 6 секунд.

Затем он показывает журнал сразу после перезагрузки, где Full GC происходит только каждые 5-10 минут.

У меня есть две дампы, использующие jmap -dump: format = b, file = dump.hprof PID , когда появляются полные GC (я не уверен, правильно ли я получил их, когда Full GC происходил или между 2 полными GC) и открывал их в http://www.eclipse.org/mat/, но не получил ничего полезного в подозреваемых в утечке:

  • 60MB: 1 экземпляр «org.hibernate.impl.SessionFactoryImpl» (я использую спящий режим с ehcache)
  • 80MB: 1,024 экземпляра "org.apache.tomcat.util.threads.ThreadWithAttributes" (это, вероятно, 1024 работника tomcat)
  • 45MB: 37 экземпляров «net.sf.ehcache.store.compound.impl.MemoryOnlyStore» (это должны быть мои 37 областей кэша в ehcache)

Обратите внимание: я никогда не получаю OutOfMemoryError.

Любые идеи о том, где я должен смотреть дальше?

12 2011-10-27T13:40:50+00:00 4
 cherouvim
cherouvim
Редактировал вопрос 11-го декабря 2012 в 4:59
Программирование
jvm
java
performance
garbage-collection
Jim
27-го октября 2011 в 2:06
2011-10-27T14:06:15+00:00
Дополнительно
Источник
Редактировать
#56789391

Когда у нас была эта проблема, мы в конечном итоге отследили ее, чтобы молодое поколение было слишком маленьким. Несмотря на то, что мы дали много бара, молодому поколению не дали его справедливого вознаграждения.

Это означало, что небольшие сборки мусора случались бы чаще и приводили к тому, что некоторые молодые объекты были перемещены в поколение, что означало бы более крупные сборки мусора.

Попробуйте использовать -XX: NewRatio с довольно низким значением (скажем, 2 или 3) и посмотрите, поможет ли это.

Более подробную информацию можно найти здесь .

6
0
cherouvim
26-го октября 2012 в 10:53
2012-10-26T10:53:18+00:00
Дополнительно
Источник
Редактировать
#56789394

Я переключился с -Xmx1024m на -Xmx2048m , и проблема исчезла. У меня теперь есть 100 дней безотказной работы.

4
0
Denis Tulskiy
27-го октября 2011 в 5:07
2011-10-27T17:07:29+00:00
Дополнительно
Источник
Редактировать
#56789393

Что может произойти в вашем случае, так это то, что у вас много объектов, которые живут немного дольше, чем жизненный цикл NewGen. Если пространство для оставшихся в живых слишком мало, они идут прямо к OldGen. -XX: + PrintTenuringDistribution может дать некоторое представление. Ваш NewGen достаточно велик, поэтому попробуйте уменьшить SurvivorRatio .

Кроме того, jconsole, вероятно, обеспечит более полное представление о том, что происходит с вашей памятью, попробуйте.

3
0
user1133275
27-го октября 2011 в 2:15
2011-10-27T14:15:11+00:00
Дополнительно
Источник
Редактировать
#56789392

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

Кроме того, если это (частично) верно, что назначение большего количества бара для JVM может увеличить время, необходимое для выполнения GC, есть точка компромисса между использованием всего 16 ГБ памяти и увеличением вашей памяти, поэтому вы можете попробовать удвоить все значения, начать

Xms1024m -Xmx2048m -XX: PermSize = 256 м -XX: MaxPermSize = 512 м

С уважением

Massimo

2
0
Похожие сообщества 11
pro.jvm
pro.jvm
5 862 пользователей
Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш канал: @proJVM Вакансии: @jvmjobs @jvmjobschat Конфы: @jvmconf ⚠️ Оффтоп -> @flood ❌Переход на личности ❌Троллинг ❌Реклама ❌HH (вакансии) ❌Варез
Открыть telegram
learn.java
learn.java
5 163 пользователей
Чат для начинающих и не только Статистика: https://combot.org/chat/-1001083535868 Основной чат - @jvmchat
Открыть telegram
Java & Co
Java & Co
4 454 пользователей
Можно обсуждать с матом и без всё, что касается жабы, вплоть до холиваров. НЕ ИМЕЕТ ОТНОШЕНИЯ К САЙТУ JAVARUSH.RU ПРАВИЛА - https://t.me/javarush/179171 Вакансии сюда - https://telegram.me/joinchat/B7IzvUCnfo6d8t3yIxKguQ По вопросам - @thedude
Открыть telegram
pro.JVM Jobs Chat
pro.JVM Jobs Chat
2 513 пользователей
Чат для обсуждения вакансий на JVM языках. Правила: - Никакого спама - Никакого троллинга и оскорблений участников - Размещение вакансий только через канал Канал для вакансий: @jvmjobs Основной чат: @jvmchat Наши друзья: @scala_jobs, @scala_jobs_feed
Открыть telegram
Java/Kotlin and more
Java/Kotlin and more
2 025 пользователей
чат о Java/Kotlin и связанных технологиях. We're discussing: job, tech questions etc. languages: russian, java, eng, kotlin Ссылка на чат: t.me/springframeworkio
Открыть telegram
Java Underground
Java Underground
1 581 пользователей
Библиотека по Java https://t.me/javalib Наше сообщество ВК: https://vk.com/javatutorial Вакансии и резюме свои строго в этот канал: https://t.me/job_java
Открыть telegram
Добавить вопрос
Категории
Все
Технологий
Культура / Отдых
Жизнь / Искусство
Наука
Профессии
Бизнес
Пользователи
Все
Новые
Популярные
1
Roxana Elizabeth CASTILLO Avalos
Зарегистрирован 5 дней назад
2
Hideo Nakagawa
Зарегистрирован 5 дней назад
3
Sergiy Tytarenko
Зарегистрирован 1 неделю назад
4
shoxrux azadov
Зарегистрирован 1 неделю назад
5
Koreets Koreytsev
Зарегистрирован 1 неделю назад
JA
© de-vraag 2022
Источник
stackoverflow.com
под лицензией cc by-sa 3.0 с атрибуцией