Сначала немного фона:
Один из наших клиентов испытывает скачки использования ЦП для экземпляров 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 для меня - единственной дополнительной информацией, которую я получил от этого, было имя потока:
Thread: 00002F82 Deferrable Alarm : 11
Теперь на мои вопросы:
- Может ли кто-нибудь из вас определить проблему, учитывая эти симптомы? (Может быть, это длинный выстрел!)
- Что такое
Deferrable Alarm
? Из дампа JVM я вижу 4 темы с этим именем. Остальные три, кажется, отлично справляются. Отладив мою локальную WebSphere (в Windows) и добавив точки останова в классе BoundedBuffer
, я вижу, что BoudedBuffer
s опрашивают и периодически вызывают некоторый слушатель.
- У меня нет доступа к консоли WebSphere для компьютеров клиентов, и они не признают необходимость внесения каких-либо изменений в конфигурацию. Я могу попросить их проверить консоль для меня - что я должен просить их посмотреть?
- У меня есть telnet-доступ к ящикам клиентов, есть ли что-то еще, что я могу исследовать здесь? Глядя на файлы профиля WebSphere и т. Д.? На какие файлы мне смотреть?
- Поскольку стек вызовов и дамп JVM явно не ссылаются на наш код, можно ли предположить, что это проблема конфигурации?
Это был длинный вопрос, так что спасибо, что дочитали до этого.
30 апреля Обновление (1)
Этим утром я заметил, что это происходит только после того, как обработан первый запрос дня (независимо от того, какая веб-служба вызывается). Это указывает пальцем на наше приложение или Apache Axis. Может ли быть так, что это просто нормальное поведение?!
30 апреля Обновление (2)
Таким образом, похоже, что эта нагрузка на процессор является своего рода служебной деятельностью для веб-контейнера или, может быть, чем-то внутри Apache Axis. Сейчас я наблюдаю, как это происходит в нескольких разных веб-приложениях на нескольких разных серверах. Приложения без веб-компонента не подвержены таким же дополнительным нагрузкам на процессор.
Я бы подумал, что если это работа по дому, то "настройка" может каким-то образом привести к обратным результатам - я имею в виду, что повышение простоя сервера приложений может, вероятно, негативно повлиять на объем "реальной" работы, которую он может выполнять. .