そのため、数日ごとに Ubuntu の Java プロセスが自動的に強制終了され、その理由がわかりません。
私のボックスには 35.84 GB の RAM があり、Java プロセスを起動するときに -Xmx28g パラメータを渡すので、利用可能な最大 RAM よりもはるかに少ない量を使用する必要があります。
次のように jstat を実行しました。
# jstat -gccause -t `pgrep java` 60000
プロセスが強制終了される直前の jstat からの出力の最後の数行は次のとおりです。
Time S0 S1 E O P YGC YGCT FGC FGCT GCT LGCC GCC
14236.1 99.98 0.00 69.80 99.40 49.88 1011 232.305 11 171.041 403.347 unknown GCCause No GC
14296.2 93.02 0.00 65.79 99.43 49.88 1015 233.000 11 171.041 404.041 unknown GCCause No GC
14356.1 79.20 0.00 80.50 99.55 49.88 1019 233.945 11 171.041 404.986 unknown GCCause No GC
14416.2 0.00 99.98 24.32 99.64 49.88 1024 234.945 11 171.041 405.987 unknown GCCause No GC
これは、この頃に /var/log/syslog でダウンしたようです: https://gist.github.com/1369135
私のJavaアプリ以外に、このサーバーでは何も実行されていません。どうしたの?
編集: Java バージョン 1.6.0_20 を実行しています。起動時に Java に渡す唯一の注目すべきパラメーターは「-server -Xmx28g」です。私はアプリケーション サーバーを使用していませんが、私のアプリには "Simple Web Framework" が組み込まれています。