1
Here are the gc log details

2013-10-30T17:37:27.285+0100: 1250455.686: [GC 1250455.686: [ParNew
        Desired survivor size 51445760 bytes, new threshold 1 (max 4)
        - age   1:   91404824 bytes,   91404824 total
        : 881572K->89325K(904384K), 0.0359086 secs] 2755473K->2052121K(2914176K)  icms_dc=100 , 0.0362248 secs] [Times: user=0.12 sys=0.00, real=0.04 secs] 

2013-10-30T17:37:27.714+0100: 1250456.115: [GC 1250456.116: [ParNew: 877881K->877881K(904384K), 0.0000232 secs]1250456.116: [CMS2013-10-30T17:37:27.937+0100: 1250456.338: [CMS-concurrent-mark: 2.608/3.118 secs] [Times: user=8.55 sys=0.14, real=3.12 secs] 
         **(concurrent mode failure):** 1962796K->1016548K(2009792K), 3.9820087 secs] 2840677K->1016548K(2914176K), [CMS Perm : 126257K->126176K(228356K)] icms_dc=100 , 3.9823002 secs] [Times: user=3.76 sys=0.01, real=3.98 secs] 

2013-10-30T17:37:31.717+0100: 1250460.122: [GC [1 CMS-initial-mark: 1016548K(2009792K)] 1038948K(2914176K), 0.0044446 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 

FULL GC の発生は見られませんでした。

問題は、CPU 使用率全体を増加させて消費する ParNew です。これで何か予測できることはありますか?

JVMパラメータはこれらです

-XX:CMSInitiatingOccupancyFraction=70
-XX:+UseCMSInitiatingOccupancyOnly
-XX:+CMSIncrementalMode
-XX:+CMSClassUnloadingEnabled
-XX:+PrintTenuringDistribution
-XX:+PrintGCDateStamps
-XX:+PrintGCDetails
-XX:+UseConcMarkSweepGC
-XX:+DisableExplicitGC
-XX:MaxPermSize=256m
-Xmx2944m

-Xms2944m

4

1 に答える 1

0

コンカレント モードの失敗は、若いコレクションの時点で、古いコレクションの空き領域が、プロモートされるオブジェクトの推定量を収容するのに十分でなかったことを意味します。

古い領域の収集はすでにスケジュールされていたため、フル GC を実行する代わりに、JVM は古い領域の GC が完了するのを待ちました (そして、若い GC を完了するのに十分な領域を解放しました)。

CMS モードでは FullGC - ストップザワールド マーク スイープ コンパクトとして実装され、若いものと古いものの両方をクリアします

並行モードの失敗は、フル GC をトリガーする場合とトリガーしない場合があります (この場合、古い GC を完了するだけで十分でした)

問題の根本的な原因は、不適切に構成された GC オプションです。あなたも削除することをお勧めします(それらは と干渉しているため-XX:+CMSIncrementalMode

-XX:CMSInitiatingOccupancyFraction=70
-XX:+UseCMSInitiatingOccupancyOnly

CMS のチューニングの詳細については、私のブログを参照してください。

于 2013-11-06T08:26:37.723 に答える