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

StackOverflow https://stackoverflow.com/questions/59787

  •  09-06-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

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

Это особенно полезно, когда у вас нет прямого доступа к хост-компьютеру (что потребовало бы "уничтожения").

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

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, ожидающий получения переменной условия

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

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

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

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

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

ВАРИАНТ 1 Создайте дамп потока с помощью консоли JMX

Для того, чтобы сгенерировать дамп потока:

  1. Откройте JMXConsole (например: http://localhost:8080 )
  2. Перейдите к jboss.system:type=ServerInfo мбеан (подсказка: вероятно, вы можете просто нажать 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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top