[英]Write JVM heap dump to stdout
我們使用以下 JVM 標志在 Docker(由 Kubernetes 管理)中運行 Spring Boot 應用程序
-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
*
有沒有我在這里缺少的簡單解決方法?
就我個人而言,我會使用一個Docker Volume安裝在 Docker 鏡像中,並將內存轉儲存儲在那里,如前所述,這些內存轉儲可能是 GB 大。
-XX:HeapDumpPath=/dev/stdout/`date`.hprof
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.