powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Java захватывает 100% процессора.Как понять почему?
25 сообщений из 27, страница 1 из 2
Java захватывает 100% процессора.Как понять почему?
    #34228994
Vetal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!

Есть такая ситуация на боевом сервере: примерно раз в неделю (когда чаще, когда реже) java захватывает 100% процессора, вследствие чего сайт грузит каждую старницу по несколько минут. На сервере стоит tomcat 5.5.20 с jetspeed, и нашими сервлетами и портлетами. Операционная система: Suse Linux 10.1.

Как отловить, почему происходит это пожирание процессора? Подскажите, в какую сторону рыть? Помогите устранить проблему.

Всем заранее спасибо!
...
Рейтинг: 0 / 0
Java захватывает 100% процессора.Как понять почему?
    #34229038
Java захватывает?
Или Tomcat?
...
Рейтинг: 0 / 0
Java захватывает 100% процессора.Как понять почему?
    #34229061
АСУ ТПшник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Действительно, определите место затыка. Остальное дело техники.
...
Рейтинг: 0 / 0
Java захватывает 100% процессора.Как понять почему?
    #34229823
Vetal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(меня всё-равно забанят)Java захватывает?
Или Tomcat?
Процесс java. tomcat же является частью процесса java (я через линуксовую команду top смотрю).

Откуда я узнаю, java или tomcat?
...
Рейтинг: 0 / 0
Java захватывает 100% процессора.Как понять почему?
    #34229825
Vetal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АСУ ТПшникДействительно, определите место затыка. Остальное дело техники.
Понятное дело. А как мне определить место затыка?
...
Рейтинг: 0 / 0
Java захватывает 100% процессора.Как понять почему?
    #34230117
Vetal
Процесс java. tomcat же является частью процесса java (я через линуксовую команду top смотрю).

Ясно. В Tomcat'е случаем нет такой фичи, как принудительный recomplie всех jsp раз в энное количество времени?

Кстати, загрузка процессора 100% так и остается до принудительное перезагрузки? Или он позагружает, позагружает и опять начинает работать нормально?
...
Рейтинг: 0 / 0
Java захватывает 100% процессора.Как понять почему?
    #34230285
Vetal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(меня всё-равно забанят) Vetal
Процесс java. tomcat же является частью процесса java (я через линуксовую команду top смотрю).

Ясно. В Tomcat'е случаем нет такой фичи, как принудительный recomplie всех jsp раз в энное количество времени?

Насколько я знаю, tomcat автоматически рекомпилит jsp-страницы после их изменения. У нас настройки в этом плане стоят по умолчанию. Никаких фич дополнительных по этой теме не подключали

(меня всё-равно забанят)Кстати, загрузка процессора 100% так и остается до принудительное перезагрузки? Или он позагружает, позагружает и опять начинает работать нормально?
Ждали до получаса - загрузка процессора оставалась на максимуме и не спускалась. Только принудительная загрузка помогала.

Кстати, у нас сервер - 4-х процесорный. А загрузка прыгает - то 400%, то 100%. Если это имеет какое-то значение...
...
Рейтинг: 0 / 0
Java захватывает 100% процессора.Как понять почему?
    #34230342
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо профайлит однозначно. Причин для этого может быть 2.
1) Слишком большой цикл требующий логики. Такой цикл может быть и не явным - возникнуть случайно в следсивте какого-то стечения обстоятельств.
2) GC не настроен на специфику приложения и посему вызывается в таком режиме когда ему приходится приостанавливать все потоки, чтобы осуществить сборку. Решается пересмотром кода для уменьшения собираемых объектов и тюнигом параметров GC. В теории можно добится чтобы GC так никогда не делал.
...
Рейтинг: 0 / 0
Java захватывает 100% процессора.Как понять почему?
    #34230349
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VetalА как мне определить место затыка?
- попробуйте JMX Remote

(меня всё-равно забанят)В Tomcat'е случаем нет такой фичи, как принудительный recomplie всех jsp раз в энное количество времени?
- нет
...
Рейтинг: 0 / 0
Java захватывает 100% процессора.Как понять почему?
    #34230572
Blazkowicz
2) GC не настроен на специфику приложения и посему вызывается в таком режиме когда ему приходится приостанавливать все потоки, чтобы осуществить сборку. Решается пересмотром кода для уменьшения собираемых объектов и тюнигом параметров GC. В теории можно добится чтобы GC так никогда не делал.
Вот уж не думаю, что из-за GC раз в неделю может такое случаться. Даже в серверном режиме он вызывается реже :)

P.S. Хотя заметил нехорошую особенность java-программ (JBuilder, Tomcat, Weblogic) разрастаться в памяти со временем.
...
Рейтинг: 0 / 0
Java захватывает 100% процессора.Как понять почему?
    #34231462
Фотография Pitbull terrier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(меня всё-равно забанят)P.S. Хотя заметил нехорошую особенность java-программ (JBuilder, Tomcat, Weblogic) разрастаться в памяти со временем.

думается, причина в кривизне написания
как-то приходилось мониторить систему на tomcat на предмет поиска нативных memory leeks.
по ходу составлял статистику для простых java leeks.
после достижения определенного уровня объем занимаемой памяти расти все-таки перестает.
правда, в тестируемом flow обращений к jsp не было, а я где-то читал, что у tomcat проблемы именно из-за jsp
...
Рейтинг: 0 / 0
Java захватывает 100% процессора.Как понять почему?
    #34231581
Pitbull terrier
думается, причина в кривизне написания
как-то приходилось мониторить систему на tomcat на предмет поиска нативных memory leeks.
по ходу составлял статистику для простых java leeks.
после достижения определенного уровня объем занимаемой памяти расти все-таки перестает.
правда, в тестируемом flow обращений к jsp не было, а я где-то читал, что у tomcat проблемы именно из-за jsp
А не подскажете, по каким причинам могут появляться подобные утечки памяти?
...
Рейтинг: 0 / 0
Java захватывает 100% процессора.Как понять почему?
    #34231680
Фотография Pitbull terrier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(меня всё равно забанят)А не подскажете, по каким причинам могут появляться подобные утечки памяти?

не знаю, сам бы хотел иметь универсальный ответ
...
Рейтинг: 0 / 0
Java захватывает 100% процессора.Как понять почему?
    #34231685
Фотография Pitbull terrier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(в таких случаях обычно рассказывают итории про бесконечные списки и не обновляющиеся кэши)

Dmitriy O "Итак вред от арабов (черных мусульман)
- Присутсвовали в татаро-монгольском иге"
...
Рейтинг: 0 / 0
Java захватывает 100% процессора.Как понять почему?
    #34231904
cpu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cpu
Гость
блин, такая же хрень...
только AS SJSAS на WIN2000 и CPU ложится два раза в день, при этом независимо от сборки GC (профилировал, реально проходит full garbage collection (чере час) а минут через 10 CPU кидает в 100%) и не зависимо от нагрузки со стороны пользователей - то выдерживает 2000 сессии, то про 50 сессия проц уходит в 100% и не выходит (ради интереса ночью прождали часов шесть)...

что это может быть такое?
...
Рейтинг: 0 / 0
Java захватывает 100% процессора.Как понять почему?
    #34231905
cpu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cpu
Гость
cpuпро 50 сессия

при 50 сессиях, sorry
...
Рейтинг: 0 / 0
Java захватывает 100% процессора.Как понять почему?
    #34231980
galisha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vetal... и нашими сервлетами и портлетами

А большой то сайт ? Сколько примерно сервлетов и т.п. Что используется для доступа к БД. Не опишите архитектуру примерно хотя бы ?
...
Рейтинг: 0 / 0
Java захватывает 100% процессора.Как понять почему?
    #34232343
М.Голованов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот любопытно, а такую элементарную вещь, как трассировку (писание в лог моментов начала и окончания операций, выполняемых в приложении, и просмотр этого лога на предмет правильности функционирования приложения) не делали? Сделайте. Сразу все станет ясно. Иначе будете долго гадать...

Для пущей ясности можно включить и трассировку компонентов Tomcat engine (прежде всего коннекторов). Хотя сам по себе Tomcat нигде не циклит.
...
Рейтинг: 0 / 0
Java захватывает 100% процессора.Как понять почему?
    #34232411
sdsdsd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
М.ГоловановА вот любопытно, а такую элементарную вещь, как трассировку (писание в лог моментов начала и окончания операций, выполняемых в приложении, и просмотр этого лога на предмет правильности функционирования приложения) не делали? Сделайте. Сразу все станет ясно. Иначе будете долго гадать...

Для пущей ясности можно включить и трассировку компонентов Tomcat engine (прежде всего коннекторов). Хотя сам по себе Tomcat нигде не циклит.

а jconsole не проще заюзать?
...
Рейтинг: 0 / 0
Java захватывает 100% процессора.Как понять почему?
    #34236166
Vetal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
galisha Vetal... и нашими сервлетами и портлетами

А большой то сайт ? Сколько примерно сервлетов и т.п. Что используется для доступа к БД. Не опишите архитектуру примерно хотя бы ?
На сайте примерно по 30 портлетов на страницу. Портлеты примерно пяти разных типов. Страниц - порядка 20. Для доступа к БД используется hibernate.
Архитектура:
Портальный движок - apache jetspeed 2.1-dev
mvc-framework для портлетов - tapestry 4.0.2
orm - hibernate 3.2
база данных - ms sql server 2005
...
Рейтинг: 0 / 0
Java захватывает 100% процессора.Как понять почему?
    #34239233
galisha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из всего перечисленного знаком только с Hibernate. Поэтому могу сделать лишь только предположения:

1. JDBC к MS SQL. Если пишите (читаете) BLOB, а JDBC плохо реализовано.
2. Таблица имеет много полей и выполняется длинный запрос к БД. На каждую запись Hibernate делает объект, что и приводит к загрузке процессора и забиванию памяти.

Чтобы все это проверить - надо протрассировать выполняемые операции.

Интересно было бы узнать о результате проверок.
...
Рейтинг: 0 / 0
Java захватывает 100% процессора.Как понять почему?
    #34416858
Motley
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня такая же фигня томкат под мощной нагрузкой (очень мощной) через некоторое время (примерно через 2 часа) проц уходит в 100 процентов не зависимо от нагрузки... Никаких БД нет, больших объемов данных для работы нет, циклов максимум на 10-20 итераций. GC тюнинговал как только мог перечитал кучу доки, ничего не помогает, логи везде где только можно ставил и убирал... А он (tomcat) все равно жрет процессор и со временем понемногу память как ни настраивай... Есть ли вообще в природе люди кому удавалось эту котяру усмирить
...
Рейтинг: 0 / 0
Java захватывает 100% процессора.Как понять почему?
    #34416979
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tomcat ни при чем. В Вашем приложении происходит утечка памяти (сам Tomcat утечку не дает) и после определенного количества обращений к приложению выжирается вся доступная JVM оперативная память. Как результат должен вылететь OutOfMemoryException, но иногда JVM успевает запустить предсмертную очистку памяти и видимо в силу невозможности что то удалить (из-за утечки памяти) впадает в бесконечный цикл, пытающийся очистить память, отсюда и 100% загрузки процессора.

Выход из этой ситуации - мониторить и отлаживать свое приложение, что бы избежать утечек памяти.
...
Рейтинг: 0 / 0
Java захватывает 100% процессора.Как понять почему?
    #34420625
sumi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot Kachalov]Tomcat ни при чем. В Вашем приложении происходит утечка памяти (сам Tomcat утечку не дает) и после определенного количества обращений к приложению выжирается вся доступная JVM оперативная память. /quot]

да не выжирается она, я имел возможность лицезреть два варианта "падения":
первый (немного не по теме, сорри) приложение перестает отвечать на 80 порту, помогает простой сброс/установка чекбокса "enabled" соответсвующего листенера сервера приложений (SJSAS у меня)

второй - это обсуждаемая загрузка проца под 100%
Смена jdk с 1.5_07 у сервера под WIN200 на jdk 1.6 под Solaris ничем не помогла
Т.к. не хотелось париться с mbean-ами, накидал обычное web-приложение, которое при обращении к нему выдает статистику по состоянию сервера (см. приложенный файл).

Оказалось, что постепенно не освобождаются thread-ы слушателя 80-порта, при том что состояние такого thread-а RUNNABLE, но из этого состояния он уже не выходит, в стеке этого потока не видно классов самого web-приложения, т.е. он занят чем-то другим, постепенно таких thread-ов становится больше, при этом увеличение их числа не пропорционально времени, т.е. на 4-процессорной машине сервер с загрузкой 50% (т.е. загрузкой некоторых процов) может работать неделю - сервер выделяет другие thread-ы из пула и на быстродействии это никак не сказывается, а может уйти (постепенно уеличивая число таких thread-ов) в 100% загрузку в течении одной ночи.
...
Рейтинг: 0 / 0
Java захватывает 100% процессора.Как понять почему?
    #34420673
sumi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
забыл дописать "нужный" thread затыкается судя по стеку на выполнении:
com.sun.enterprise.web.connector.grizzly.LinkedListPipeline (сорри всего стека пока под рукой)

ссылка
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Java захватывает 100% процессора.Как понять почему?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]