kill -3, чтобы получить java thread dump

Я использую команду kill -3 для просмотра дампа JVM в unix. Но где я могу найти результат этой команды kill ? Я потерян!!

9 Solutions collect form web for “kill -3, чтобы получить java thread dump”

В качестве альтернативы вы можете использовать jstack (в комплекте с JDK), чтобы взять дамп streamа и написать вывод везде, где хотите. Разве это не доступно в среде unix?

 jstack PID > outfile 

Дамп streamа записывается в систему из виртуальной машины, на которой вы выполнили kill -3. Если вы перенаправляете вывод консоли JVM в файл, дамп streamа будет в этом файле. Если JVM запущен в открытой консоли, тогда дамп streamа будет отображаться на его консоли.

Существует способ перенаправления вывода дампа streamа JVM на сигнал разрыва для разделения файла с помощью опции диагностики LogVMOutput :

 -XX:+UnlockDiagnosticVMOptions -XX:+LogVMOutput -XX:LogFile=jvm.log 

С Java 8 в изображении jcmd является jcmd .

 jcmd  Thread.print 

Ниже приведен fragment из документации Oracle :

В выпуске JDK 8 были представлены Java Mission Control, Java Flight Recorder и утилита jcmd для диагностики проблем с JVM и Java-приложениями. Рекомендуется использовать последнюю утилиту jcmd вместо предыдущей утилиты jstack для расширенной диагностики и снижения издержек производительности.

Однако отправка этого с помощью приложения может быть следствием лицензирования, которое я не уверен.

В том же месте, где размещена стандартная версия JVM. Если у вас есть сервер Tomcat, это будет файл catalina_(date).out .

При использовании kill -3 следует видеть дамп streamа в стандартном выходе. Большинство серверов приложений записывают стандартный вывод в отдельный файл. Вы должны найти его там, используя kill -3. Существует несколько способов получения дампов streamов:

  • Kill -3: Дает выход на стандартный вывод.
  • Если у вас есть доступ к окну консоли, где работает сервер, можно использовать комбинацию клавиш Ctrl + Break для генерации трассировки стека на выходе std.
  • Для hotspot VM мы также можем использовать команду jstack для создания дампа streamа. Это часть JDK. Синтаксис следующий: Использование: jstack [-l] (для подключения к запущенному процессу) jstack -F [-m] [-l] (для подключения к зависающему процессу)
  • Для JRKit JVM мы можем использовать команду JRCMD, которая поставляется с синтаксисом JDK: jrcmd [[]] [-l] [-f file] [-p] -h]

В Jboss вы можете выполнить следующее

 nohup $JBOSS_HOME/bin/run.sh -c yourinstancename $JBOSS_OPTS >> console-$(date +%Y%m%d).out 2>&1 < /dev/null & kill -3  

Это перенаправит ваш вывод / threadump на консоль файлов, указанную в приведенной выше команде.

  1. Найти идентификатор процесса [PS ID]
  2. Выполнить jcmd [PS ID] Thread.print

Шаги, которые следует выполнить, если вы хотите, чтобы дамп streamа вашего Java-процесса StandAlone

Шаг 1: Получить идентификатор процесса для сценария оболочки, вызывающего java-программу

 linux$ ps -aef | grep "runABCD" user1 **8535** 4369 0 Mar 25 ? 0:00 /bin/csh /home/user1/runABCD.sh user1 17796 17372 0 08:15:41 pts/49 0:00 grep runABCD 

Шаг 2: Получить идентификатор процесса для ребенка, который был вызван runABCD. Используйте вышеприведенный PID, чтобы получить детей.

 linux$ ps -aef | grep **8535** user1 **8536** 8535 0 Mar 25 ? 126:38 /apps/java/jdk/sun4/SunOS5/1.6.0_16/bin/java -cp /home/user1/XYZServer user1 8535 4369 0 Mar 25 ? 0:00 /bin/csh /home/user1/runABCD.sh user1 17977 17372 0 08:15:49 pts/49 0:00 grep 8535 

Шаг 3: Получите JSTACK для конкретного процесса. Получить идентификатор процесса вашего процесса XYSServer. т.е. 8536

 linux$ jstack **8536** > threadDump.log 
Interesting Posts

Как заставить jQuery ждать завершения эффекта?

Как установить начальное значение и автоинкремент в MySQL?

Как использовать ключевое слово C # в качестве имени свойства?

Какие шаги вы следуете и рекомендуете ли вы делать Windows XP быстрее?

Как настроить яркость подсветки монитора в Windows

Страница X of Y

статические файлы с помощью express.js

На каких dpi я должен сканировать свои старые фотографии?

C ++ 11 – static_assert в функции constexpr?

Запуск машин VirtualBox завершается с ошибкой «Невозможно загрузить модуль R3 … VBoxDD.DLL (VBoxDD)»

Есть ли инструмент архива (который работает в Windows), который я могу установить «атрибут выполнения» в архиве или в zip-файле?

Получить OutputStream в строку

Почему Servlet.service () для сервлета jsp выбрал это исключение?

Мой процессор i7 работает слишком горячим?

Как открыть определенный порт, такой как 9090 в Google Compute Engine

Давайте будем гением компьютера.