Websphere. WSVR0605W: Зависание процесса в пуле / Thread SIBJMSRAThreadPool hung

При возникновении зависания потока, сопровождаемого сообщением
Возможным решением проблемы может стать расширение пула соответствующих процессов.
Сообщение может содержать название различных пулов в зависимости от того, какой из них вызвал зависание.
Например,
Может содержать один из доступных пулов:
- Default pool
- ORB.thread.pool
- SIBFAPInboundThreadPool
- SIBFAPThreadPool
- SIBJMSRAThreadPool
- TCPChannels.DCS
- WMQCommonServices
- WMQJCAResourceAdapter
- WebContaner (довольно распространено)
- server.startup
Все эти пулы имеются в каждом управляемом сервере (managed server) в вебсфере.
К ним можно добраться из консоли администратора ( обычно вида http://yourhost:9061/ibm/console)
Для этого выбираем в меню Servers -> Websphere Application servers -> YourServer.
В разделе Additional Properties выбираем Thread Pools
В списке пулов выбираете тот, в котором произошло зависание.
И меняете параметры Minimum Size и Maximum Size.
Зачем менять эти параметры?
Проблема в том, что при максимальном значении пула, скажем в 10 потоков, может произойти такая ситуация:
На сервере происходит интенсивное выполнение заданий, все 10 потоков заняты.
Бизнес-логика пытается получить еще один поток, 11-ый. Фабрика не выдает его, поскольку все заняты. Мы переходим в режим ожидания нашей очереди, а все 10 потоков и не думают прекращать свое выполнение, поскольку у них и так много работы. В итоге, проходит максимальное время ожидания, по дефолту в 10 минут, и выдается ошибка о зависании.
Такие моменты неприятны и могут вызвать зависание всего процесса. От чего придется перезапускать управляеымй сервер.
Конец
Материалы, которые могут вас заинтересовать
- Websphere. Таймаут на транзакциях. Transaction has timed out after 120 second
- Websphere + Jython. Установка параметров и определений для адаптера ресурсов (Resource Adapter Definitions)
- Websphere + Jython. Установка очередности загрузки классов (ClassLoader order)
- Websphere + Jython. Установка политик загрузчика классов для приложения (ClassLoader policies)
- Websphere + Jython. Развертывание приложения (Deploying enterprise application)
- Websphere + Jython. Создание источников данных (DataSource)
- Websphere + Jython. Создание JDBC провайдеров
- Websphere + Jython. Создание топиков и очередей
- Websphere + Jython. Создание фабрик соединений







Да вот хрен. Виснет так, что даже перезапуск сервера не помогает. Насмерть виснет. Сообщение застревает в статусе "Удаление" и не может быть удалено, т.к. уже передано приемнику, но в тоже время по таймауту должно быть сброшено.
В результате:
CWSIP0362W: Сообщение с ИД 71000000 невозможно удалить из получателя бла-бла-бла, поскольку оно было передано приемнику...
И хоть кол на голове серверу теши.
Попробуйте остановить все виртуальные сервера (и кластер если есть), а после этого удалять. Возможно, пул занят.
Отправить комментарий