我们使用以下JVM标志在Docker中运行Spring Boot应用程序(由Kubernetes管理)</ p>
-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
*
我在这里缺少一个简单的解决方法吗?
答案 0 :(得分:0)
就个人而言,我会使用Docker Volume安装在Docker镜像中并在那里存储内存转储,如前所述,它可能是GB很大。
答案 1 :(得分:0)
-XX:HeapDumpPath=/dev/stdout/`date`.hprof