|
|
|
Java захватывает 100% процессора.Как понять почему?
|
|||
|---|---|---|---|
|
#18+
Всем привет! Есть такая ситуация на боевом сервере: примерно раз в неделю (когда чаще, когда реже) java захватывает 100% процессора, вследствие чего сайт грузит каждую старницу по несколько минут. На сервере стоит tomcat 5.5.20 с jetspeed, и нашими сервлетами и портлетами. Операционная система: Suse Linux 10.1. Как отловить, почему происходит это пожирание процессора? Подскажите, в какую сторону рыть? Помогите устранить проблему. Всем заранее спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2006, 19:45:20 |
|
||
|
Java захватывает 100% процессора.Как понять почему?
|
|||
|---|---|---|---|
|
#18+
Java захватывает? Или Tomcat? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2006, 20:12:54 |
|
||
|
Java захватывает 100% процессора.Как понять почему?
|
|||
|---|---|---|---|
|
#18+
Действительно, определите место затыка. Остальное дело техники. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2006, 20:23:02 |
|
||
|
Java захватывает 100% процессора.Как понять почему?
|
|||
|---|---|---|---|
|
#18+
(меня всё-равно забанят)Java захватывает? Или Tomcat? Процесс java. tomcat же является частью процесса java (я через линуксовую команду top смотрю). Откуда я узнаю, java или tomcat? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2006, 11:07:06 |
|
||
|
Java захватывает 100% процессора.Как понять почему?
|
|||
|---|---|---|---|
|
#18+
АСУ ТПшникДействительно, определите место затыка. Остальное дело техники. Понятное дело. А как мне определить место затыка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2006, 11:07:23 |
|
||
|
Java захватывает 100% процессора.Как понять почему?
|
|||
|---|---|---|---|
|
#18+
Vetal Процесс java. tomcat же является частью процесса java (я через линуксовую команду top смотрю). Ясно. В Tomcat'е случаем нет такой фичи, как принудительный recomplie всех jsp раз в энное количество времени? Кстати, загрузка процессора 100% так и остается до принудительное перезагрузки? Или он позагружает, позагружает и опять начинает работать нормально? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2006, 12:24:37 |
|
||
|
Java захватывает 100% процессора.Как понять почему?
|
|||
|---|---|---|---|
|
#18+
(меня всё-равно забанят) Vetal Процесс java. tomcat же является частью процесса java (я через линуксовую команду top смотрю). Ясно. В Tomcat'е случаем нет такой фичи, как принудительный recomplie всех jsp раз в энное количество времени? Насколько я знаю, tomcat автоматически рекомпилит jsp-страницы после их изменения. У нас настройки в этом плане стоят по умолчанию. Никаких фич дополнительных по этой теме не подключали (меня всё-равно забанят)Кстати, загрузка процессора 100% так и остается до принудительное перезагрузки? Или он позагружает, позагружает и опять начинает работать нормально? Ждали до получаса - загрузка процессора оставалась на максимуме и не спускалась. Только принудительная загрузка помогала. Кстати, у нас сервер - 4-х процесорный. А загрузка прыгает - то 400%, то 100%. Если это имеет какое-то значение... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2006, 13:25:34 |
|
||
|
Java захватывает 100% процессора.Как понять почему?
|
|||
|---|---|---|---|
|
#18+
Надо профайлит однозначно. Причин для этого может быть 2. 1) Слишком большой цикл требующий логики. Такой цикл может быть и не явным - возникнуть случайно в следсивте какого-то стечения обстоятельств. 2) GC не настроен на специфику приложения и посему вызывается в таком режиме когда ему приходится приостанавливать все потоки, чтобы осуществить сборку. Решается пересмотром кода для уменьшения собираемых объектов и тюнигом параметров GC. В теории можно добится чтобы GC так никогда не делал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2006, 13:38:17 |
|
||
|
Java захватывает 100% процессора.Как понять почему?
|
|||
|---|---|---|---|
|
#18+
VetalА как мне определить место затыка? - попробуйте JMX Remote (меня всё-равно забанят)В Tomcat'е случаем нет такой фичи, как принудительный recomplie всех jsp раз в энное количество времени? - нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2006, 13:39:31 |
|
||
|
Java захватывает 100% процессора.Как понять почему?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz 2) GC не настроен на специфику приложения и посему вызывается в таком режиме когда ему приходится приостанавливать все потоки, чтобы осуществить сборку. Решается пересмотром кода для уменьшения собираемых объектов и тюнигом параметров GC. В теории можно добится чтобы GC так никогда не делал. Вот уж не думаю, что из-за GC раз в неделю может такое случаться. Даже в серверном режиме он вызывается реже :) P.S. Хотя заметил нехорошую особенность java-программ (JBuilder, Tomcat, Weblogic) разрастаться в памяти со временем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2006, 14:24:21 |
|
||
|
Java захватывает 100% процессора.Как понять почему?
|
|||
|---|---|---|---|
|
#18+
(меня всё-равно забанят)P.S. Хотя заметил нехорошую особенность java-программ (JBuilder, Tomcat, Weblogic) разрастаться в памяти со временем. думается, причина в кривизне написания как-то приходилось мониторить систему на tomcat на предмет поиска нативных memory leeks. по ходу составлял статистику для простых java leeks. после достижения определенного уровня объем занимаемой памяти расти все-таки перестает. правда, в тестируемом flow обращений к jsp не было, а я где-то читал, что у tomcat проблемы именно из-за jsp ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2006, 19:56:23 |
|
||
|
Java захватывает 100% процессора.Как понять почему?
|
|||
|---|---|---|---|
|
#18+
Pitbull terrier думается, причина в кривизне написания как-то приходилось мониторить систему на tomcat на предмет поиска нативных memory leeks. по ходу составлял статистику для простых java leeks. после достижения определенного уровня объем занимаемой памяти расти все-таки перестает. правда, в тестируемом flow обращений к jsp не было, а я где-то читал, что у tomcat проблемы именно из-за jsp А не подскажете, по каким причинам могут появляться подобные утечки памяти? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2006, 21:42:21 |
|
||
|
Java захватывает 100% процессора.Как понять почему?
|
|||
|---|---|---|---|
|
#18+
(меня всё равно забанят)А не подскажете, по каким причинам могут появляться подобные утечки памяти? не знаю, сам бы хотел иметь универсальный ответ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2006, 23:37:21 |
|
||
|
Java захватывает 100% процессора.Как понять почему?
|
|||
|---|---|---|---|
|
#18+
(в таких случаях обычно рассказывают итории про бесконечные списки и не обновляющиеся кэши) Dmitriy O "Итак вред от арабов (черных мусульман) - Присутсвовали в татаро-монгольском иге" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2006, 23:42:34 |
|
||
|
Java захватывает 100% процессора.Как понять почему?
|
|||
|---|---|---|---|
|
#18+
блин, такая же хрень... только AS SJSAS на WIN2000 и CPU ложится два раза в день, при этом независимо от сборки GC (профилировал, реально проходит full garbage collection (чере час) а минут через 10 CPU кидает в 100%) и не зависимо от нагрузки со стороны пользователей - то выдерживает 2000 сессии, то про 50 сессия проц уходит в 100% и не выходит (ради интереса ночью прождали часов шесть)... что это может быть такое? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2006, 08:55:00 |
|
||
|
Java захватывает 100% процессора.Как понять почему?
|
|||
|---|---|---|---|
|
#18+
cpuпро 50 сессия при 50 сессиях, sorry ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2006, 08:55:52 |
|
||
|
Java захватывает 100% процессора.Как понять почему?
|
|||
|---|---|---|---|
|
#18+
Vetal... и нашими сервлетами и портлетами А большой то сайт ? Сколько примерно сервлетов и т.п. Что используется для доступа к БД. Не опишите архитектуру примерно хотя бы ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2006, 09:44:31 |
|
||
|
Java захватывает 100% процессора.Как понять почему?
|
|||
|---|---|---|---|
|
#18+
А вот любопытно, а такую элементарную вещь, как трассировку (писание в лог моментов начала и окончания операций, выполняемых в приложении, и просмотр этого лога на предмет правильности функционирования приложения) не делали? Сделайте. Сразу все станет ясно. Иначе будете долго гадать... Для пущей ясности можно включить и трассировку компонентов Tomcat engine (прежде всего коннекторов). Хотя сам по себе Tomcat нигде не циклит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2006, 11:47:13 |
|
||
|
Java захватывает 100% процессора.Как понять почему?
|
|||
|---|---|---|---|
|
#18+
М.ГоловановА вот любопытно, а такую элементарную вещь, как трассировку (писание в лог моментов начала и окончания операций, выполняемых в приложении, и просмотр этого лога на предмет правильности функционирования приложения) не делали? Сделайте. Сразу все станет ясно. Иначе будете долго гадать... Для пущей ясности можно включить и трассировку компонентов Tomcat engine (прежде всего коннекторов). Хотя сам по себе Tomcat нигде не циклит. а jconsole не проще заюзать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2006, 12:08:40 |
|
||
|
Java захватывает 100% процессора.Как понять почему?
|
|||
|---|---|---|---|
|
#18+
galisha Vetal... и нашими сервлетами и портлетами А большой то сайт ? Сколько примерно сервлетов и т.п. Что используется для доступа к БД. Не опишите архитектуру примерно хотя бы ? На сайте примерно по 30 портлетов на страницу. Портлеты примерно пяти разных типов. Страниц - порядка 20. Для доступа к БД используется hibernate. Архитектура: Портальный движок - apache jetspeed 2.1-dev mvc-framework для портлетов - tapestry 4.0.2 orm - hibernate 3.2 база данных - ms sql server 2005 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2007, 20:20:54 |
|
||
|
Java захватывает 100% процессора.Как понять почему?
|
|||
|---|---|---|---|
|
#18+
Из всего перечисленного знаком только с Hibernate. Поэтому могу сделать лишь только предположения: 1. JDBC к MS SQL. Если пишите (читаете) BLOB, а JDBC плохо реализовано. 2. Таблица имеет много полей и выполняется длинный запрос к БД. На каждую запись Hibernate делает объект, что и приводит к загрузке процессора и забиванию памяти. Чтобы все это проверить - надо протрассировать выполняемые операции. Интересно было бы узнать о результате проверок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2007, 12:17:46 |
|
||
|
Java захватывает 100% процессора.Как понять почему?
|
|||
|---|---|---|---|
|
#18+
У меня такая же фигня томкат под мощной нагрузкой (очень мощной) через некоторое время (примерно через 2 часа) проц уходит в 100 процентов не зависимо от нагрузки... Никаких БД нет, больших объемов данных для работы нет, циклов максимум на 10-20 итераций. GC тюнинговал как только мог перечитал кучу доки, ничего не помогает, логи везде где только можно ставил и убирал... А он (tomcat) все равно жрет процессор и со временем понемногу память как ни настраивай... Есть ли вообще в природе люди кому удавалось эту котяру усмирить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2007, 21:47:31 |
|
||
|
Java захватывает 100% процессора.Как понять почему?
|
|||
|---|---|---|---|
|
#18+
Tomcat ни при чем. В Вашем приложении происходит утечка памяти (сам Tomcat утечку не дает) и после определенного количества обращений к приложению выжирается вся доступная JVM оперативная память. Как результат должен вылететь OutOfMemoryException, но иногда JVM успевает запустить предсмертную очистку памяти и видимо в силу невозможности что то удалить (из-за утечки памяти) впадает в бесконечный цикл, пытающийся очистить память, отсюда и 100% загрузки процессора. Выход из этой ситуации - мониторить и отлаживать свое приложение, что бы избежать утечек памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2007, 23:44:23 |
|
||
|
Java захватывает 100% процессора.Как понять почему?
|
|||
|---|---|---|---|
|
#18+
[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% загрузку в течении одной ночи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2007, 10:54:05 |
|
||
|
Java захватывает 100% процессора.Как понять почему?
|
|||
|---|---|---|---|
|
#18+
забыл дописать "нужный" thread затыкается судя по стеку на выполнении: com.sun.enterprise.web.connector.grizzly.LinkedListPipeline (сорри всего стека пока под рукой) ссылка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2007, 11:02:41 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=34231904&tid=2146259]: |
0ms |
get settings: |
21ms |
get forum list: |
29ms |
check forum access: |
8ms |
check topic access: |
8ms |
track hit: |
54ms |
get topic data: |
19ms |
get forum data: |
4ms |
get page messages: |
101ms |
get tp. blocked users: |
2ms |
| others: | 351ms |
| total: | 597ms |

| 0 / 0 |
