Как проанализировать дамп потока WebLogic? - PullRequest
1 голос
/ 11 ноября 2010

Я заметил, что есть некоторые застрявшие темы.

Мне нравится проверять, что может быть причиной зависания потока, просто основавшись на журналах дампа потока ниже. Кто-нибудь посоветует? А также в чем разница между толстым замком и тонким замком?

        "[STUCK] ExecuteThread: '25' for queue: 'weblogic.kernel.Default (self-tuning)'" id=87495 idx=0x274 tid=15308 prio=1 alive, in native, blocked, daemon

            -- Blocked trying to get lock: com/jnn/testController@0x135a26c0[thin lock]

Ответы [ 2 ]

2 голосов
/ 18 ноября 2010

Один набор только дампов потоков не будет слишком полезен, чтобы найти причину. Возьмите 4 или 5 наборов дампов с интервалом 5 секунд между каждым. таким образом, в конце у вас будет один лог-файл, который требует около 20-25 секунд действия на сервере приложений.

Тогда вам следует проверить, не хотите ли вы проверить, не застрял ли поток или выполняется длительная транзакция, все дампы потоков покажут, что определенный идентификатор потока находится на той же строке в трассировке стека Java. Проще говоря, транзакция (скажем, в EJB или базе данных) охватывает несколько дампов потоков и, следовательно, требует дополнительного изучения.

Теперь, когда вы выполните их через Самурай или TDA (я сам не использовал TDA), он выделит их красным цветом, чтобы вы могли быстро щелкнуть по нему и перейти к строкам, показывающим проблемы.

См. Пример здесь . Посмотрите на изображение самурая в этой ссылке. Зеленый в порядке. Красный и серый нужно смотреть.

В вашем случае поток 25 блокируется при попытке получить блокировку для этого объекта

com/jnn/testController@0x135a26c0 

Поиск по оставшейся части блокировки, чтобы увидеть, что удерживает блокировку на том же объекте, и понять, почему он не снимает блокировку - это будет видно в трассировке стека

0 голосов
/ 14 декабря 2010

«Тонкая блокировка» - это блокировка без конкуренции (конфликт возникает, когда поток должен ждать, прежде чем получить блокировку). Тонкие блокировки переводятся в «Толстые блокировки», когда возникает конфликт, и создается список со всеми потоками, ожидающими получения блокировки.

Подробнее об этом можно прочитать здесь: http://download.oracle.com/docs/cd/E13150_01/jrockit_jvm/jrockit/geninfo/diagnos/thread_basics.html

...