Weblogic 10.3.6 генерирует пустой heapdump на OutOfMemoryError - PullRequest
0 голосов
/ 05 сентября 2018

Я пытаюсь сгенерировать полную heapdump из Weblogic 10.3.6 из-за ошибки OutOfMemoryError, сгенерированной веб-приложением, развернутым на сервере.

Я установил следующий стартовый скрипт:

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/heapdump

Когда возникает ошибка OutOfMemoryError, Weblogic создает пустой файл hprof (размер 0 байт) в папке /path/to/heapdump, и ничего не происходит: сервер остается в режиме RUNNING, даже если он больше недоступен. Процесс Java все еще жив, но с 0% процессора.

Даже журнал server.out кажется полностью замороженным, без каких-либо следов ошибки OutOfMemoryError.

Что не так с конфигурацией?

Ответы [ 3 ]

0 голосов
/ 10 сентября 2018

Хорошо, ваша конфигурация выглядит хорошо ... вы можете проверить, есть ли у пользователя процесса weblogic права на редактирование файла дампа кучи.

Вы можете получить дамп кучи с помощью инструментов Java: JAVA_HOME / bin / jmap -dump: format = b, file = path_of_the_file

ИЛИ

% JROCKIT_HOME% \ bin \ jrcmd hprofdump filename = path_of_the_file

0 голосов
/ 28 сентября 2018

Возможно, вы можете использовать Java Flight Recorder для сохранения событий и проверки того, какие объекты генерируют OOM.

(любой профилировщик тоже должен работать).

0 голосов
/ 10 сентября 2018

Был там :(. Я помню, как в то время, когда мы обнаружили, что это было несколько логично, так как не хватало памяти для нормальной работы, JVM не могла автоматически найти достаточно памяти для создания heapdump. Если память мне служит ну, в то время мы сделали две вещи для устранения утечки памяти: сначала нам посчастливилось «достаточно», что проблема возникала довольно регулярно, поэтому был возможен тщательный ручной мониторинг (мониторинг gc.log, поиск повторного FullGC и мониторинг вкладка «Производительность» в консоли.) Зная, когда начиналась проблема, мы выполняли команду kill -3, чтобы получить дамп вручную. Мы также с некоторой удачей использовали jstack {PID} (JDK 1.6 в Linux). в то время разработчики смогли определить утечку памяти. Надеюсь, это поможет.

...