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




http://java.sun.com/developer/technicalArticles/Programming/Stacktrace/
...
«На платформах UNIX вы можете отправить сигнал программе с помощью команды kill. Это сигнал выхода, который обрабатывается JVM. Например, в Solaris вы можете использовать команду kill -QUIT process_id, где process_id - это номер процесса вашей Java-программы.
В качестве альтернативы вы можете ввести последовательность клавиш <ctrl> \ в окне, в котором была запущена программа Java. Отправка этого сигнала дает указание обработчику сигнала в JVM рекурсивно распечатать всю информацию о потоках и мониторах внутри JVM ».
...
"Определение состояний потоков
Вы увидите много разных потоков в разных состояниях на снимке из трассировки стека JVM. Используемый ключ:
R Выполняемый или работающий поток
S Подвесная нить
CW Thread ожидает переменной условия
MW Thread ожидает блокировки монитора
Поток MS приостановлен в ожидании блокировки монитора "
Существует специальный метод JBoss, который немного более удобен для пользователя:
http://community.jboss.org/wiki/GenerateAThreadDumpWithTheJMXConsole
Это особенно полезно, когда у вас нет прямого доступа к хост-машине (для чего потребуется «kill»).
Приложение stacktrace, обнаруженное здесь, также полезно, особенно на компьютерах с Windows, когда приложение java не запускается из командной строки.
Иногда JBoss так сильно блокируется, что даже jmx-concole не отвечает. В таком случае используйте kill -3 в Linux и SendSignal в Windows.
Thread.getAllStackTraces () (начиная с Java 1.5)
Два варианта:
ОПЦИЯ 1Создайте дамп потока с помощью консоли JMX
Чтобы сгенерировать дамп потока:
http://localhost:8080)jboss.system:type=ServerInfo mbean (намекать: вы, вероятно, можете просто CTRL-F и ввести type = ServerInfo в диалоговом окне)listThreadDump.Примечания:
Если вы используете Internet Explorer, вы должны использовать File > Save As для сохранения вывода вместо копирования данных в текстовый редактор. По какой-то причине, когда вы копируете текст из Internet Explorer, разрывы строк не копируются, и весь вывод заканчивается в одной строке.
ВАРИАНТ 2Создайте дамп потока с помощью Twiddle
В качестве альтернативы вы можете использовать twiddle для выполнения метода listThreadDump() и передачи возвращенного HTML непосредственно в файл. Используйте эту командную строку:
<JBOSS_HOME>/bin/twiddle invoke "jboss.system:type=ServerInfo" listThreadDump > threads.html
Страница https://community.jboss.org/wiki/ThreadDumpJSP содержит автономный автономный файл threaddump.war, который можно использовать без JMX.
См. community.jboss.org/wiki/ThreadDump для некоторых опций.