0

5年以上の運用で一度だけ発生したプロダクションで奇妙な問題に遭遇しました。PSPermGen と「実際の」持続時間は、突然の user+sys タイミングよりもはるかに長いことがわかりました。2016 年 2 月 4 日に、以前の実行では 0.2 ~ 0.3 秒だった PSPermGen に 38.96 秒かかり、解放されたメモリはありませんでした。user+sys が 0.3 ~ 0.4 秒の場合、実時間は 40 秒かかりました。これは、以前の実行に比べて異常に高くなっています。フル GC が頻繁に発生しているようには見えず、GC 関連のエラーも見られませんでした。期間中、CPU 使用率は 1% 未満、メモリ使用率は 20% 未満でした。

情報 | jvm 1 | 2016/02/04 02:56:56 | [GC [PSYoungGen: 88312K->936K(86144K)] 261016K->174219K(260928K), 0.4070215 秒] [時間: user=0.75 sys=0.00, real=0.42 秒] INFO | jvm 1 | 2016/02/04 02:57:08 | [GC情報| jvm 1 | 2016/02/04 02:57:11 | [PSYoungGen: 85703K->96K(102400K)] 258985K->175019K(278784K), 3.1902546 秒] [時間: user=7.14 sys=0.05, real=3.18 秒] INFO | jvm 1 | 2016/02/04 02:57:13 | [GC [PSYoungGen: 102368K->755K(123520K)] 277291K->175700K(299904K), 0.0266474 秒] [時間: user=0.00 sys=0.00, real=0.02 秒] INFO | jvm 1 | 2016/02/04 02:57:20 | [GC [PSYoungGen: 123507K->128K(144768K)​​] 298452K->175419K(321152K), 0.0021357 秒] [時間: user=0.01 sys=0.01, real=0.02 秒] INFO | jvm 1 | 2016/02/04 02:57:28 | [GC [PSYoungGen: 143616K->] 977K(144704K)] 318907K->176319K(321088K), 0.0035773 秒] [時間: user=0.00 sys=0.00, real=0.00 秒] INFO | jvm 1 | 2016/02/04 02:57:28 | [フル GC ステータス | ラッパー | 2016/02/04 02:58:03 | JVM がハングしているように見える: JVM からのシグナルの待機中にタイムアウトになりました。JVM を再起動しています。情報 | jvm 1 | 2016/02/04 02:58:08 | [PSYoungGen: 977K->0K(144704K)] [PSOldGen: 175341K->35127K(174784K)] 176319K->35127K(319488K) [PSPermGen: 38992K->38992K(65536K) ]、38.9595115 秒] [時間: user=0.33 sys=0.14、real=40.07 秒]

最後に実行されたいくつかのフル GC は次のとおりです。

情報 | jvm 1 | 2016/02/02 12:59:49 | [フル GC [PSYoungGen: 433K->0K(98944K)] [PSOldGen: 176749K->38591K(174784K)] 177183K->38591K(273728K) [PSPermGen: 39380K->39380K(65536K)]、0.2982459 秒: user=0.30 sys=0.00, real=0.30 秒] 21189 INFO | jvm 1 | 2016/02/03 03:15:16 | [フル GC [PSYoungGen: 2873K->0K(125696K)] [PSOldGen: 171318K->33804K(174784K)] 174191K->33804K(300480K) [PSPermGen: 39940K->38366K(65536K)]、0.3317803 秒: user=0.34 sys=0.00, real=0.34 秒] 47151 INFO | jvm 1 | 2016/02/03 12:16:51 | [フル GC [PSYoungGen: 1406K->0K(171776K)] [PSOldGen: 174936K->38003K(174784K)] 176342K->38003K(346560K) [PSPermGen: 38642K->38642K(65536K)]、0.2988259 秒: user=0.30 sys=0.00, real=0.30 秒]

Windows 2003 x86 で約 8GB と 4 つの CPU を使用して Java 6 update 45 を実行しています。ディスク容量は十分すぎるほどでした。256 MB の初期ヒープ メモリと 512 MB の最大メモリで JVM を構成します。このアプリケーションは、Tanuki Wrapper を介して Windows サービスとして実行されます。

現在、長い GC の一時停止がメモリ、CPU、ディスク容量などによるものではないようです。ここで何が欠けていますか?

4

1 に答える 1

0

http://www.evanjones.ca/jvm-mmap-pause.htmlで、問題がディスク IO にある可能性を示唆する記事を見つけました。-XX:+PerfDataDisableSharedMem を設定することで解決できます。ただし、別のリンク: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/2015-March/014324.htmlは、これが jcmd や jps などの監視ツールに影響を与えることを示唆しています。

于 2016-04-11T06:47:03.273 に答える