Интенсивное использование процессора в Weblogic
Я использую Weblogic 10.3.4 + Oracle DB на обеих машинах Solaris (VM)
К сожалению, на прошлой неделе наше приложение, размещенное на Weblogic, стало очень медленным и не могло обслуживать новых пользователей (все длилось в течение 1 часа).
Чтобы выяснить причину, мы запрашиваем отчеты с уровня ОС, уровня БД.
Показанные отчеты:
- очень интенсивное использование процессора в тот час. (явно был пик от числа пользователей, использующих систему)
- Пул подключений достиг верхнего предела в Weblogic (200 подключений!)
- Статистика AWR от Db показала ухудшение времени отклика.
СЕЙЧАС кто был первым курица или яйцо?
Очень медленная база данных может привести к замедлению работы WEBlogic и достижению максимального числа соединений из пула.
Однако, если ЦП очень загружен, возможно, потоки, удерживающие соединения БД, настолько заняты, что не возвращают соединение в пул (поскольку процессор занят)==> новый клиент приходит, новое соединение и так далее... поэтому пул соединений может быть исчерпан таким образом...?
С уважением
Cris
1 ответ
Высокая загрузка ЦП часто вызвана сборщиком мусора Java, который пытается собрать свободную память в пространстве кучи JVM, perm gen и т. Д. Если это так, вам нужно добавить больше памяти, обычно в кучу JVM. Увидеть -Xmx
Вариант JVM.
Когда загрузка ЦП в JVM высока, попытайтесь выяснить, какие потоки используют ЦП. Во время проблемы создайте 2-3 дампов потока с pkill -3 java
, Дампы будут расположены (для Solaris) в /proc/<JVM_PID>/path/1
Если пул потоков достигнет своего предела, вы должны увидеть ошибки в журналах. Загрузка процессора не должна увеличиваться из-за этого. Это среда, управляемая событиями, и нет необходимости создавать пулы.
Медленная БД может фактически снизить загрузку ЦП на сервере приложений. Зависит от того, как приложение запрограммировано / настроено.