簡體   English   中英

防止CloudFoundry殺死OOM上的應用程序(內存不足)

[英]Preventing CloudFoundry from killing an application on OOM (out of memory)

我們有一個Java應用程序部署在CloudFoundry中,由於請求的負載很大,因此偶爾會引發OOM錯誤。 發生這種情況時,CloudFoundry會終止該應用程序並重新啟動它。

當應用程序在開發計算機(而不是CF)上運行時,OOM不會導致崩潰(但會在輸出中顯示“堆內存不足”消息)。 通常,請求處理程序線程結束,並且為請求分配的內存被垃圾回收。 該應用程序將繼續運行,並成功服務於更多請求。

有沒有一種方法可以配置CF,以避免在OOM上重新啟動應用程序?

謝謝。

最簡潔的答案是不。 當您超過分配給它的內存限制時,平台將始終終止您的應用程序。 這是預期的行為。 您不能繞過它,因為這實際上意味着您的應用程序沒有內存限制。

附帶一提,我強烈建議您使用Java buildpack v4.x(最新)。 配置JVM更好,這樣您就可以獲得諸如JVM OOME之類的有意義的錯誤,而不僅僅是讓您的應用程序崩潰。 當發生這種情況時,它還會轉儲有用的診斷信息,這些信息將引導您找到問題的根源。

另一注...

OOM不會導致崩潰(但是會在輸出中顯示“堆內存不足”消息); 通常,請求處理程序線程結束,並且為請求分配的內存被垃圾回收。

您不想依靠這種行為。 一旦在JVM中發生OOME,所有賭注都將關閉。 它可能能夠恢復,並且可能使您的應用程序陷入可怕和無法使用的狀態。 沒有辦法知道,因為沒有辦法確切知道OOME將在何處發生。 當您獲得一個OOME時,最好的做法是獲取所需的任何診斷信息並重新啟動。 當您的應用程序在CF上運行時,這正是Java buildpack(v4 +)所做的。

希望有幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM