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

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

См. community.jboss.org/wiki/ThreadDump для некоторых опций.

Vadzim 27.05.2013 09:34
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
7
1
20 714
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

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

Чтобы сгенерировать дамп потока:

  1. Откройте JMXConsole (например: http://localhost:8080)
  2. Перейдите к jboss.system:type=ServerInfo mbean (намекать: вы, вероятно, можете просто CTRL-F и ввести type = ServerInfo в диалоговом окне)
  3. Щелкните ссылку для mbean Информация о сервере.
  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

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

Другие вопросы по теме