WebLogic (10.3.5) Пул потоков и застрявшие потоки - Что считается непрерывным использованием? - PullRequest
2 голосов
/ 20 октября 2011

Я хочу определить застрявшие потоки (установив StuckThreadMaxTime для отслеживания использования непрерывных потоков) и учитывая, что каждая из транзакций выполняется недолго, я хочу установить для этого значения низкое значение - скажем, 20 секунд.1002 * Я подозреваю, что счетчик непрерывного использования переустанавливается, как только поток возвращается в пул (это было бы логично), даже если поток повторно используется практически мгновенно.Но я не знаю этого точно.

Кто-нибудь знает наверняка, что возврат потока в пул будет устанавливать непрерывное использование «clock» вместо StuckThreadMaxTime, даже если поток находится в пуле длянеопределяемый маленький промежуток времени?

1 Ответ

3 голосов
/ 01 ноября 2011

Я не уверен, что вы имеете в виду под "счетчиком непрерывного использования", но я могу объяснить, как работают потоки Weblogic, и, надеюсь, это прояснит ваши сомнения.

Каждому входящему запросу присваивается один поток по WL. Этот поток будет использован для завершения запроса, а затем возвращен в пул потоков.

Что StuckThreadMaxTime делает, так это сообщает, что поток перешел этот лимит времени для того же запроса.

Таким образом, если по умолчанию установлено значение 600 секунд, сообщение будет записано в журнал, когда это время будет пересечено.

Примечание - Weblogic НЕ очищает застрявший поток через 600 секунд , он будет продолжать обработку столько времени, сколько потребуется. Это просто отмечает это событие в журнале.

Наконец, когда запрос завершен, поток доступен для следующего запроса. Вы можете проверить, сколько запросов выполнил каждый поток, просмотрев в консоли администратора

Серверы> Мониторинг> Потоки покажет количество потоков и количество выполненных запросов

Итак, чтобы вернуться к вашему точному вопросу - StuckThreadMaxTime сбрасывается для каждого запроса и не переносится на несколько запросов

Этот таймер запускается во время запроса , а не когда поток возвращается в пул.

Вы можете проверить это с помощью дампов потоков - если вы получили сообщение StuckThread для (скажем) потока 7, но через несколько минут вы увидите, что поток 7 мог очиститься и теперь обслуживает другой запрос.

Дополнительная литература:

Защита от заедания WebLogic

...