Как вы генерируете и анализируете дамп потока из работающего экземпляра JBoss? - PullRequest
7 голосов
/ 12 сентября 2008

Как вы генерируете и анализируете дамп потока из работающего экземпляра JBoss?

Ответы [ 7 ]

6 голосов
/ 13 сентября 2008

Существует метод, специфичный для JBoss, который немного более удобен для пользователя:

http://community.jboss.org/wiki/GenerateAThreadDumpWithTheJMXConsole

Это особенно полезно, когда у вас нет прямого доступа к хост-машине (что потребует «kill»).

4 голосов
/ 12 сентября 2008

http://java.sun.com/developer/technicalArticles/Programming/Stacktrace/

...

"На платформах UNIX вы можете отправить сигнал программе с помощью команды kill. Это сигнал выхода, который обрабатывается JVM. Например, в Solaris вы можете использовать команду kill -QUIT process_id, где process_id - это номер процесса вашей Java-программы.

В качестве альтернативы вы можете ввести последовательность клавиш \ в окне, где была запущена Java-программа. Отправка этого сигнала дает указание обработчику сигнала в JVM рекурсивно распечатать всю информацию о потоках и мониторах внутри JVM. "

...

"Определение состояний потока

Вы увидите много разных потоков в разных состояниях на снимке из трассировки стека JVM. Используемый ключ:

R Ходовая или работающая резьба

S Подвесная нить

CW Поток ожидает переменную условия

MW Поток, ожидающий блокировки монитора

MS Тема приостановлена ​​в ожидании блокировки монитора "

1 голос
/ 21 мая 2013

Два варианта:

ОПЦИЯ 1 Создание дампа потока с помощью консоли JMX

Чтобы создать дамп потока:

  1. Откройте JMXConsole (например: http://localhost:8080)
  2. Перейдите к jboss.system:type=ServerInfo mbean ( подсказка: вы, вероятно, можете просто нажать CTRL-F и ввести type = ServerInfo в диалоговом окне)
  3. Нажмите на ссылку для информации о сервере.
  4. Перейдите на дно, где написано listThreadDump
  5. Нажмите на нее и получите дамп темы

Примечания:

Если вы используете Internet Explorer, вы должны использовать File > Save As, чтобы сохранить вывод, а не копировать данные в текстовый редактор. По какой-то причине, когда вы копируете текст из Internet Explorer, разрывы строк не копируются, и весь вывод заканчивается на одной строке.

ОПЦИЯ 2 Создание дампа резьбы с помощью Twiddle

В качестве альтернативы вы можете использовать twiddle для выполнения метода listThreadDump() и передать полученный HTML-код прямо в файл. Используйте эту командную строку:

<JBOSS_HOME>/bin/twiddle invoke "jboss.system:type=ServerInfo" listThreadDump > threads.html
1 голос
/ 27 июля 2012

Thread.getAllStackTraces () (начиная с Java 1.5)

1 голос
/ 13 сентября 2008

Найденное приложение stacktrace здесь также полезно, особенно на машинах Windows, когда приложение java не запускается из командной строки.

0 голосов
/ 27 мая 2013

https://community.jboss.org/wiki/ThreadDumpJSP страница содержит автономные автономные threaddump.war, которые можно использовать без JMX.

0 голосов
/ 19 апреля 2011

Иногда JBoss блокирует настолько сильно, что даже jmx-concole не отвечает. В таком случае используйте kill -3 в Linux и SendSignal в Windows.

...