2017-11-08 2 views
0

CloudFoundryにデプロイされたJavaアプリケーションを使用しているため、結果としてペイロードが大きい要求のためにOOMエラーが発生することがあります。 この場合、CloudFoundryはアプリを強制終了して再起動します。CloudFoundryがOOM(アプリケーション不足)でアプリケーションを強制終了させないようにする

アプリケーションが開発マシン(CFではなく)で実行されている場合、OOMはクラッシュしません(ただし、出力に「ヒープメモリ不足」メッセージが表示されます)。通常、要求ハンドラスレッドは終了し、要求に割り当てられたメモリはガベージコレクトされます。アプリケーションは引き続き実行され、より多くの要求を正常に処理します。

OOMでアプリケーションを再起動しないようにCFを設定する方法はありますか?

ありがとうございました。

+0

アプリでどのくらいのメモリを使用していますか? –

答えて

1

短い答えはノーです。あなたが割り当てたメモリ制限を超えると、プラットフォームは常にあなたのアプリを殺すでしょう。これは意図された動作です。これは、基本的にアプリケーションにメモリ制限がないことを意味するため、これをバイパスすることはできません。

Javaビルドパックv4.x(最新版)をまだ使用していない場合は、それを使用することを強くお勧めします。アプリケーションをクラッシュさせるのではなく、JVM OOMEのような意味のあるエラーが発生するように、JVMを構成する方がはるかに優れています。また、この問題が発生したときに有用な診断情報をダンプして、問題の原因につなげます。

もう一つのサイドノート...

OOMは、クラッシュにはなりません(ただし、出力の「ヒープメモリの不足」のメッセージが表示されません)。通常、要求ハンドラスレッドは終了し、要求に割り当てられたメモリはガベージコレクトされます。

この動作に頼る必要はありません。 JVMでOOMEが発生すると、すべてのベットはオフになります。それは回復する可能性があり、アプリケーションをひどく使い易い状態にする可能性があります。 OOMEがどこを攻撃するかを正確に知る方法がないので、知る方法はありません。 OOMEを取得したら、必要な診断情報を入手して再起動することをお勧めします。これはまさにあなたのアプリがCF上で動作するときにJava buildpack(v4 +)が行うことです。

希望に役立ちます!

関連する問題