2011-04-07 5 views
16

Можно создать дубликат:
Can I force generation of a JVM crash log file?силы или генерировать ядро ​​JVM дамп

Как можно заставить или сгенерировать дамп JVM на сервере приложений Java или вообще?

+0

, для которого сервер приложений, который вы ищете – developer

+6

Этот вопрос следует переопределить и перефразировать. Как заставить IBM JVM генерировать отвалы ядра, ответ Дамодара ниже очень хорош. – ams

+2

Не дубликат (я думаю), дамп ядра - это не журнал сбоев (я думаю)! – PJTraill

ответ

19

Проблема (Аннотация): Для диагностики проблем, связанных с зависанием или плохой эксплуатацией приложений-клиентов, работающих на WebSphere Application Server Community Edition, пользователи должны будут генерировать различные дампы и отправлять их в службу поддержки IBM для диагностики.

Этот технот объясняет, как создавать необходимые дампы, когда WebSphere Application Server Community Edition работает как служба операционной системы. Это Technote относится к IBM Java SDK 1.5.0 и IBM Java SDK 1.6.0

Причина: Когда клиент приложения опыт зависание или плохой работы с WebSphere Application Server Community Edition на IBM Java SDK 1.5.0 или IBM Java SDK 1.6.0, а сервер работает как служба операционной системы, соответствующее окно командной строки/серверного процесса недоступно для пользователей. В результате пользовательские сигналы не могут быть отправлены с клавиатуры для запуска дампов.

Решение проблемы: Когда окно командной строки процесса JVM доступно, генерируя отвалы прямо вперед следующим образом:

Окна: Если установка JVM настроена для запуска свалок сигнала пользователя, нажмите CRTL+Break в окне команд для создания дампов.

Linux: Если настройка JVM настроена на создание дампов в пользовательском сигнале, нажмите CTRL+\ на окне оболочки.

AIX: Если настройка JVM настроена на создание дампов в пользовательском сигнале, нажмите CTRL+\ на окне оболочки.

Примечание: Для того чтобы сгенерировать Java дамп ядра, ядро ​​системы дамп, дамп кучи и оснастку дамп при пользовательском сигнале, свалка агенты должны быть настроены через параметры JVM следующий образом:

-Xdump:java+heap+system+snap:events=user 

Для получения дополнительной информации о том, как настроить агенты сбрасывания, посетите страницу -Xdump.

Однако, если WebSphere Application Server Community Edition работает как служба операционной системы, окно командной строки может быть недоступно. Этот случай также возникнет при запуске JVM-процесса с помощью javaw.exe на окнах.

В предыдущих случаях пользователю необходимо найти соответствующий идентификатор процесса JVM и использовать поставляемые поставщиком операционной системы или поставляемые IBM инструменты для создания дампов, выполнив следующие шаги.

Windows: WinDbg можно загрузить с сайта инструментов Microsoft Dev для создания дампов системного ядра.Используйте следующую команду в консоли WinDbg для создания базовой системы дампа:

dump /f <dumpfile> 

Где DumpFile включает путь к каталогу и имя файла ядро ​​системы дампа. Убедитесь, что вместо /ma используется опция /f. /f генерирует полную свалку, где /ma генерирует мини-свалку. Поддерживаются только полные дампы с помощью инструмента jextract, поставляемого с IBM Java SDK 1.5.0/1.6.0.

Утилита SendSignal для Windows. Для этого JVM необходимо настроить для создания дампов на пользовательских сигналах. Для создания Java дампа, дампа кучи, ядро ​​системы дампа и стопорный дампа при пользовательском сигнале, следующий параметр должен подаваться в JVM при запуске:

-Xdump:java+heap+system+snap:events=user 

Примечание: SendSignal утилита может быть использована, чтобы генерировать все типы дампов, где WinDbg генерирует только системные отвалы.

Linux and AIX: Сигнал для Linux и AIX - SIGQUIT. Используйте команду для передачи сигнала пользователя, чтобы вызвать различные дампы:

kill -3 <PID> 

Для этого, виртуальная машина должна быть настроена для создания отвалов на сигнал пользователя. Чтобы сгенерировать дамп ядра Java, кучу кучи, дамп системного ядра и привязку к пользовательскому сигналу, в JVM при запуске должна быть предоставлена ​​следующая опция.

-Xdump:java+heap+system+snap:events=user 

Примечание. Файлы дампа системного ядра должны обрабатываться с использованием инструмента jextract, а вывод должен быть отправлен в службу поддержки IBM. Jextract из одной и той же виртуальной машины Java, испытавшей проблему следует использовать для обработки основной системы дамп:

<JAVA_HOME>/jre/bin/jextract <dumpfile> 

Где DumpFile является имя файла ядра системы сброса.

Это приведет к созданию zip-файла .zip. Почтовый файл необходимо отправить в службу поддержки IBM.

+0

kill -3 не работал для меня на CentOS 6 & JDK 8. Мне пришлось использовать метод gdb из этого сообщения: http://stackoverflow.com/questions/20832793/java-get-heap-dump-without- jmap или-без висячей на-приложения – wbdarby

-2

Если вы используете свой собственный код, то необходимо поднять исключение и сразу же распечатать его стек. Если нет, инструменты профилирования должны иметь способы захвата моментальных снимков потоков, запущенных в вашей JVM. Я использовал YourKit и мне понравилось, но есть free alternatives.

Смежные вопросы