![](/img/trans.png)
[英]Adding the timestamp to heap dump filename generated from java application running in kubernetes pod
[英]Persist heap dump in case of OOM in kubernetes pod?
當 java 進程出現 OOM 並且 pod 重新啟動時,我需要保留堆轉儲。
我在 jvm 參數中添加了以下內容
-XX:+ExitOnOutOfMemoryError -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/dumps
...並且 emptydir 安裝在同一路徑上。
但問題是,如果 pod 重新啟動並且它被安排在不同的節點上,那么我們將丟失堆轉儲。 即使 pod 被安排到不同的節點,我如何保留堆轉儲?
我們正在使用 AWS EKS,並且我們有超過 1 個 pod 副本。
有人可以幫忙嗎?
您必須將堆轉儲持久保存在 Pod 之間的共享網絡位置上。 為了實現這一點,您需要提供持久卷聲明,在 EKS 中,這可以使用安裝在不同可用性區域上的彈性文件系統來實現。 您可以通過閱讀本關於基於 EFS 的 PVC 的指南來開始了解它。
由於在您的情況下寫入 EFS 太慢,AWS EKS 有另一種選擇 - awsElasticBlockStore
。
EBS 卷的內容會保留,並且在刪除 pod 時會卸載該卷。 這意味着 EBS 卷可以預先填充數據,並且數據可以在 pod 之間共享。
注意:您必須先使用 aws ec2 create-volume 或 AWS API 創建一個 EBS 卷,然后才能使用它。
使用 awsElasticBlockStore 卷時有一些限制:
請查看有關此主題的官方 k8s 文檔頁面。 以及如何在 EKS 中使用持久存儲。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.