持续时间长的PSPermGen'和'真实'与'用户'相比的时间和' sys'在完整GC期间

时间:2016-03-07 10:05:32

标签: java performance garbage-collection jvm java-service-wrapper

我在生产中遇到一个奇怪的问题,经过5年多的运作后才发生一次。我们发现PSPermGen和&#39;真实&#39;持续时间远远高于用户+系统时间。 2016年2月4日,PSPermGen在之前的运行时间为0.2-0.3秒,并且没有释放内存,耗时38.96秒。当用户+ sys为0.3-0.4秒时,实时花费40秒,这与之前的运行相比异常高。没有看到完整的GC频繁发生,我也没有观察到任何GC相关的错误。 CPU使用率是&lt; 1%,内存使用率<1持续时间为20%。

  

INFO | jvm 1 | 2016/02/04 02:56:56 | [GC [PSYoungGen:   88312K-> 936K(86144K)] 261016K-> 174219K(260928K),0.4070215秒]   [时间:用户= 0.75 sys = 0.00,实际= 0.42秒] INFO | jvm 1 |   2016/02/04 02:57:08 | [GC INFO | jvm 1 | 2016/02/04 02:57:11 |   [PSYoungGen:85703K-> 96K(102400K)] 258985K-> 175019K(278784K),   3.1902546 secs] [次:用户= 7.14 sys = 0.05,实际= 3.18秒] INFO | jvm 1 | 2016/02/04 02:57:13 | [GC [PSYoungGen:   102368K-> 755K(123520K)] 277291K-> 175700K(299904K),0.0266474秒]   [时间:用户= 0.00 sys = 0.00,实际= 0.02秒] INFO | jvm 1 |   2016/02/04 02:57:20 | [GC [PSYoungGen:123507K-> 128K(144768K)]   298452K-> 175419K(321152K),0.0021357 secs] [次:用户= 0.01 sys = 0.01,   真= 0.02秒] INFO | jvm 1 | 2016/02/04 02:57:28 | [GC   [PSYoungGen:143616K-> 977K(144704K)] 318907K-> 176319K(321088K),   0.0035773秒] [时间:用户= 0.00 sys = 0.00,实际= 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秒] [时间:用户= 0.33 sys = 0.14,真实= 40.07秒]

最后几个完整的GC是:

  

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

我在Windows 2003 x86上运行Java 6更新45,大约8GB和4个CPU。磁盘空间绰绰有余。我们将JVM配置为初始堆内存为256 MB,最大内存为512 MB。该应用程序通过Tanuki Wrapper作为Windows服务运行。

目前看来,长时间的GC暂停是由于内存,CPU,磁盘空间等原因造成的。我在这里缺少什么?

0 个答案:

没有答案