製品版のアプリの 1 つで問題が発生しています。
VMは次のように構成されています
-XX:MaxPermSize=300M -Xms2560M -Xmx2560M -Xloggc:/app/log/gc-admin-20120619-123754.log -verbose:gc -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction =80 -XX:+DisableExplicitGC -XX:CMSMaxAbortablePrecleanTime=8000
私が見逃して適用される 2 つのオプションは XX:PermSize - MaxPermSize と同じにする必要があります (推奨) CMSInitiatingOccupancyFraction が使用されている場合は UseCMSInitiatingOccupancyOnly です。
ただし、パイプラインのこれらの変更により、問題が解決されるとは確信していません。
コンカレント モードの障害が発生していますが、障害が発生すると、ワールド コレクションの停止に永遠の時間がかかります。現時点では、その理由について少し戸惑っています!!
ここにいくつかのサンプルがあります
168427.476: [GC [1 CMS-initial-mark: 2135988K(2578880K)] 2141041K(2617216K), 3.1029210 秒] [時間: user=0.02 sys=0.01, real=3.10 秒] 168430.596: [CMS-concurrent-mark-start ] 168441.309: [GC 168441.309: [ParNew: 36520K->36520K(38336K), 0.0000210 秒]168441.309: [CMS168747.453: [CMS-concurrent-mark: 309.313/316.857 秒] [Times: = user5, = sys5.8 real=316.81 秒] (同時モード障害): 2561882K->1310927K(2578880K)、767.0309740 秒] 2598402K->1310927K(2617216K)、[CMS パーマ: 96774K->96171K(158792K)]、[ユーザー] 3 秒 6.0 秒 7.0 =3.87 sys=5.06, real=766.92 秒]
STWコレクション全体について私が心配しているのは、766.92秒のタイミングですが、CPU時間は「user = 3.87 sys = 5.06」だけなので、残りの時間はここで何が起こっているのでしょうか?? これは私が困惑しているところです。アプリ内のすべてのスレッドを停止するのにそれほど時間がかかるとは想像できません!! もしかしてスラッシング??
169545.325: [GC [1 CMS-initial-mark: 2141069K(2578880K)] 2166025K(2617216K), 0.0530140 秒] [Times: user=0.05 sys=0.00, real=0.06 secs] 169545.379: [CMS-concurrent-mark-start ] 169558.635: [CMS-concurrent-mark: 10.407/13.256 秒] [Times: user=7.58 sys=0.53, real=13.25 secs] 169558.635: [CMS-concurrent-preclean-start] 169558.684: [CMS-concurrent-preclean: 0.048/0.048 秒] [Times: user=0.01 sys=0.00, real=0.05 secs] 169558.684: [CMS-concurrent-abortable-preclean-start] 169560.544: [GC 169560.544: [ParNew169560.605: [CMS-concurrent-abortable] -preclean: 0.210/1.921 秒] [時間: user=0.93 sys=0.05, real=1.92 秒] 169560.846: [GC[YG 占有: 1906 K (38336 K)]169560.846: [再スキャン (並列) , 0.0046910 秒]169560.851 : [weak refs 処理、0.0000990 秒] [1 CMS-remark: 2350428K(2578880K)] 2352335K(2617216K)、0.0048570 秒] [時間:user=0.01 sys=0.00, real=0.01 secs] 169560.853: [CMS-concurrent-sweep-start] 169568.204: [CMS-concurrent-sweep: 7.351/7.351 secs] [Times: user=0.91 sys=0.09, real=7.34秒] 169568.204: [CMS-concurrent-reset-start] 169568.211: [CMS-concurrent-reset: 0.007/0.007 秒] [Times: user=0.01 sys=0.00, real=0.01 secs]
これは問題を示していません
252247.318: [GC [1 CMS-initial-mark: 2069401K(2578880K)] 2075094K(2617216K), 1.5311840 秒] [時間: user=0.01 sys=0.00, real=1.53 秒] 252248.849: [CMS-concurrent-mark-start ] 252350.336: [GC 252350.336: [ParNew: 20984K->4222K(38336K), 12.2251190 秒]252362.561: [CMS252520.780: [CMS-concurrent-mark: 161.376/271.922 秒] [Times: = 2.6 user, sys1.5 real=271.89 秒] (同時モードの失敗): 2232372K->1061586K(2578880K)、407.2310250 秒] 2240205K->1061586K(2617216K)、[CMS Perm: 97525K->97381K(160480K)]、8 秒 5 ユーザー:4 秒 4 =4.23 sys=2.99, real=419.39 秒]
そして、別のすごい「Times: user=4.23 sys=2.99, real=419.39 secs」。CPU 時間はマイナーな「user=4.23 sys=2.99」ですが、全体の時間は「419.39」です。VM が長時間ハングする原因は何ですか?? 10秒以内のSTW回収で2.5gを回収するのが理想!!
しきい値 CMSInitiatingOccupancyFraction を下げるつもりですが、そのようなコレクション時間では役に立たないと思います!! スムーズに実行されるコレクションもあれば、そうでないコレクションもありますが、私が言ったように、世界が完全に停止するタイミングが心配です。
https://blogs.oracle.com/jonthecollector/entry/what_the_heck_s_aを読み ました
そしてjdk6を使用しています。
誰かが以前に似たようなことを経験したことがありますか?