2009-04-29 5 views
5

Во-первых, просто немного фона:Шипы Использование CPU в WebSphere 6.1

Один из наших клиентов испытывает CPU спайки использования для WebSphere экземпляров, работающих под управлением одной из наших веб-приложений (другие примеры с другими приложениями в порядке) , У них есть тестовая среда и живая среда (оба iSeries), которые оба испытывают проблему - с одним приложением для каждого экземпляра. Мы развернули это приложение локально в наших собственных тестовых средах, а также для многих других клиентов на iSeries без подобных проблем.

Что происходит на самом деле:

Каждый второй или около того, использование процессора для WebSphere процесса использования процессора подскакивает в любую из 7% - 20%, даже если нет никаких запросов, обрабатываемые в данный момент. Клиент сообщил о том, что пики достигают 30%. Эти шипы в среднем составляют 1.5% процессора в целом - другие экземпляры WebSphere обычно используют 0% - 0.1% при простоях.

Мои исследования до сих пор

Таким образом, я имел взгляд на резьбе. В одном потоке в тестовой среде использовался ~350 процессорных циклов в секунду. Аналогичная нить в их живом окружении использовала ~1500 циклов ЦП в секунду (показывая, что у нее большой процессор). Стек вызовов для этих потоков выглядит

Type Program     Statement   Procedure      
     QLESPI  QSYS   17    LE_Create_Thread2__FP12crtt > 
     QJVALIBJVM QSYS   7     startThread__FPv    
J com/ibm/ws/util/Threa >     run       
J com/ibm/ws/util/Threa >     run       
J com/ibm/ws/util/Threa >     getTask      
J com/ibm/ws/util/Bound >     poll 

полное имя класса из нижней строки com/ibm/ws/util/BoundedBuffer. Я попросил клиента, чтобы сделать JVM Dump для меня - только дополнительная информация, которую я получил от этого было название темы:

Thread: 00002F82 Deferrable Alarm : 11 

Теперь мои вопросы:

  • из вас может определить проблема, учитывая эти симптомы? (Возможно, это длинный выстрел!)
  • Что такое Deferrable Alarm? Из JVM Dump я вижу 4 потока с этим именем. Остальные трое, похоже, все в порядке. Отлаживая мою локальную WebSphere (в Windows) и добавляя точки останова в классе BoundedBuffer, я вижу, что BoudedBuffer s опроса и периодического вызова некоторого прослушивателя.
  • У меня нет доступа к консоли WebSphere для клиентских машин, и они не имеют права на внесение каких-либо изменений в конфигурацию. Я могу попросить их проверить консоль для меня, хотя, что я должен просить их посмотреть?
  • У меня есть telnet-доступ к ящикам клиента, есть ли что-нибудь еще, что я могу исследовать здесь? Глядя на файлы профиля WebSphere и т. Д.? На какие файлы я должен смотреть?
  • Поскольку в стеке вызовов и JVM Dump явно не указывается наш код, можно ли предположить, что это проблема конфигурации?

Это был долгий вопрос, поэтому спасибо за то, что вы читаете это далеко.

30 Update апреля (1)

Этим утром я заметил, что такое поведение происходит только после первого запроса дня был обработан (независимо от того, который веб-службы вызывается). Это указывает пальцем на наше приложение или Apache Axis. Может быть, это просто нормальное поведение ?!

30 Update апреля (2)

Таким образом, кажется, что эта активность процессора является своего рода деятельности домашнего хозяйства для веб-контейнера или может быть что-то внутри Apache Axis. Я заметил, что это происходит на нескольких разных веб-приложениях на нескольких разных серверах. Приложения, не имеющие веб-компонента, не страдают от дополнительных расходов процессора.

Я бы предположил, что если это домашняя работа, что «настройка» ее каким-то образом может быть продуктивной продукцией - я имею в виду, что упростить работу сервера приложений, вероятно, отрицательно повлияет на количество «реальной» работы, которую он может делать.

+0

Является ли это клиентами iSeries на том же уровне, что и ваши другие клиенты? Существуют ли другие отличия, которые делают этот уникальный? – Ichorus

+0

Да, это тот же уровень. Это также происходит на WebSphere 5.1, а также на 6.1 –

ответ

0

Очень инстинктивно (не знакомы с платформами iSeries) Я бы посмотрел на связанные с диском проблемы, связанные с IO. Можете ли вы описать дисковую подсистему? Вы видите, что ваше приложение проводит в iowait необычно большое количество времени?

+0

Спасибо за предложение. Я смотрел на ввод-вывод, но когда сервер простаивает, все еще есть пики CPU, но нет вызовов ввода-вывода. –

0

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

http://www-01.ibm.com/support/docview.wss?uid=swg24018437

Надеется, что это помогает. Cheers John

+0

Интересное чтение .. спасибо –

0

Моя лучшая догадка заключается в том, что это какой-то контроль над экземпляром, например, Tivioli и т. Д. Вы исключили какую-либо деятельность GC?

НТН Том

+0

Спасибо за комментарий Том. Тивиоли была одной из вещей, на которые мы впервые посмотрели. Но не виновник. Мне удалось удовлетворить клиента «теорией домашнего хозяйства», так что, надеюсь, это конец: P –

1

Вы могли бы попытаться профиль и сделать кучи дампы приложения, которые могли бы ответить на несколько вопросов, связанных с памятью и использования центрального процессора.

0

Большинство серверов приложений реализованы в самой Java, а также в WebSphere. Эти серверы, помимо обслуживания запросов клиентов, должны выполнять другие периодические задания, такие как, например, управление пулами ресурсов. Выполнение этих заданий создаст некоторые временные объекты, которые необходимо собрать мусором.

В зависимости от того, сколько у вас выделенных, использования и настроек сборщика мусора вызывается сборщик мусора. Я бы сказал, попробуйте посмотреть, является ли это сборщик мусора, который занимает ваш процессор. Для этого подключите утилиту jconsole к удаленному процессу websphere в течение дня и посмотрите, есть ли какая-либо взаимосвязь между использованием кучи и использованием процессора.

1

Я бы порекомендовал вам следующую сборку documentation, предоставленную IBM, и привлечение PMR вместе со своим собственным расследованием. Вещи, которые вы могли бы подозревать:

  • сбора мусора (маловероятно на низкий уровень использования приложений)
  • Таймеры или задачи (например, java.util.Таймер или commonj работы менеджер)
  • Претест соединения, которое имеет сложный SQL запрос (в свойствах источника данных WebSphere Application Server, источник данных в)

Я хотел бы также рекомендую использовать профайлер, чтобы определить причину, YourKit profiler довольно порядочный.

0

Я также испытываю эту самую проблему, [Deferrable Alarm: x], используя BoundedBuffer. Единственное различие, которое у меня есть, это то, что это на 64-битной машине Windows 7. Нет абсолютно никакого процесса Tivioli или другого пакетного процесса, никаких запросов не создается, единственный экземпляр просто неактивен.

Я могу запустить приложение в режиме DEBUG и приостановить поток отложенного сигнала тревоги, а пики CPU прекратить, возобновить и начать заново.

Я проверил активность диска, активность в сети, и их ничего там не происходит.

Я бегу WebSphere 6.1.0.27.