Swisscom Cloudに展開可能なJavaアプリケーションがあります。 1.5GのRAMを持つインスタンス。 このアプリケーションのメモリ使用量を制限するために、CF用の次のパラメータを使用しています。 ps -ef | grep java
を実行する際に、インスタンスの下でJavaアプリケーションがSwisscomクラウド上でOOMで失敗する
[jre: { version: 1.8.0_+ }, memory_calculator: {memory_sizes: {stack: 228k},
memory_heuristics: {heap: 50, metaspace: 20, native: 50, stack: 10}}]
は、我々が得る:
-Xms611500K -XX:MetaspaceSize=244600K -Xmx611500K -XX:MaxMetaspaceSize=244600K -Xss228
-XX:MaxDirectMemorySize=256m -XX:InitialCodeCacheSize=32m -XX:ReservedCodeCacheSize=64m
-XX:CompressedClassSpaceSize=250m -XX:+UseCompressedOops -XX:+UseCompressedClassPointer
残念ながらいくつかの時間後に我々のアプリのプロセスが殺されている( "終了ステータス137で")。私たちはCFのために別の設定を試みましたが、運はありませんでした。私たちは使用メモリを制限しているにもかかわらず、私たちは常に1.5ギガバイトのRAMを使い果たしています。
2016-11-10T14:31:08.34+0200 [API/0] OUT App instance exited with guid
72a197e9-e222-43b5-9828-9553c1d58315 payload: {"instance"=>"", "index"=>0,
"reason"=>"CRASHED", "exit_description"=>"2 error(s) occurred:\n\n* 2 error(s)
occurred:\n\n* Exited with status 137 (out of memory)\n* cancelled\n* cancelled",
"crash_count"=>1, "crash_timestamp"=>1478781068233690142,
"version"=>"ebfced51-9973-434b-8ec0-79a8caa86b3b"}
クラッシュする前に、私たちは新しいレリックを使用して、ヒープメモリの使用状況を分析し、私たちは、あなたが以下を参照することができます発見さ:4:30の周り
ここ は、Exited with status 137 (out of memory)
が起こりました。あなたが見ることができるように、メモリの超過は全くありませんでした。実際に間違っている可能性が何
7 vcap 10 -10 6160764 1.357g 22528 S 27.3 7.4 3:09.52 java
:私は、私は次のだクラッシュする前にCFインスタンスの下top
コマンドを実行
? Javaプロセスは実際には1.4GのRAMを使用していましたが、New Relicグラフからはそのような大量のメモリは使用されていません。
終了コードについては、こちらを参照してください。http://journal.thobe.org/2013/02/jvms-and-kill-signals.html「...私たちはメモリを使用したという事実にもかかわらず...」と言うと、これは雲台の限界ですか?私はそれがあまりにも多くのメモリを使用する場合、あなたのプロセスを殺していると思います。だからあなたはまた、JVMのメモリを制限する必要があります –
Xmxを使用してJVMのメモリを制限するのですか?はい、私はそれを制限しました。 –
New Relicで監視した後、グラフを追加しました。 –