Назад | Перейти на главную страницу

Сбой службы Tomcat

У меня проблемы со службой Tomcat, которая дает сбой (перестает отвечать на запросы), и ее необходимо перезапускать каждые несколько дней. Мои графики показывают, что использование памяти HEAP достигает примерно 3 ГБ во время пиков, и это наиболее очевидный симптом проблемы. Из того, что я прочитал, добавление максимального предела памяти Xmx для jvm определяет, сколько HEAP может быть выделено. Для Xmx установлено значение более 10 ГБ.

Я также поигрался с аргументом MaxPermSize, но безрезультатно. Я думаю, что этот параметр определяет распределение памяти для использования памяти некоторыми приложениями, но, как правило, он отличается от самой памяти HEAP.

Теперь мне интересно, есть ли альтернативный параметр, который я могу передать, который определяет ограничение памяти / actual / HEAP? В противном случае любые советы по исследованию проблемы были бы хороши, поскольку я не могу с уверенностью сказать, что это ограничение памяти, а журналы ошибок не показывают много.

Сначала я бы порекомендовал вам пройти ускоренный курс по Java и Tomcat. Я могу дать вам все виды советов, но, в конце концов, вы должны понимать, что вы делаете, чтобы правильно администрировать сервер.

Тем не менее, вы не можете сказать JVM, что она может использовать больше памяти, чем доступно на вашей машине. Если ваш Xmx уже превышает 10 ГБ, возможно, вы можете увеличить его (если на вашем сервере доступно больше оперативной памяти). Но есть вероятность, что это, вероятно, уже настроено на максимальную вероятность кем-то, кто настраивал это до вас.

Что касается того, что происходит, ваши журналы сообщат вам, что не хватает памяти - HEAP или PermGen. Вам нужно понять, что это такое, и вы можете прочитать об этом здесь: Параметры виртуальной машины Java HotSpot.

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

PermGen - это место, где, например, находится код, который создается во время выполнения. В современных фреймворках это обычно заканчивается (Hibernate, Spring, AOP и т. Д.). Так что типичная настройка - 512 МБ или 1 ГБ. По моему опыту, редко требуется больше, но это может варьироваться в зависимости от приложений.