Мы используем следующие флаги JVM для запуска приложения Spring Boot внутри Docker (управляемого Kubernetes)
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp -XX:+ExitOnOutofMemoryError
Как и ожидалось, контейнер перезапускается при исключении OOM. Однако дамп кучи, созданный при выходе (в /tmp), больше недоступен, так как контейнер был перезапущен. Хотя мы можем сопоставить постоянный том, есть ли способ записать дамп кучи в STDOUT (поскольку мы уже собираем журналы из STDOUT)? Использование -XX:HeapDumpPath=/dev/stdout
приводит к
*
Dumping heap to /dev/stdout ...
Unable to create /dev/stdout: File exists
*
Есть ли простой обходной путь, который мне здесь не хватает?