Ответ 1

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

Этот технот объясняет, как создавать необходимые дампы, когда WebSphere Application Server Community Edition работает как служба операционной системы. Этот метод применим к 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>  

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

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

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

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

Где dumpfile - имя файла дампа системного ядра.

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

Ответ 2

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