java young gc比用户花费更长的系统时间

时间:2018-07-05 06:45:23

标签: java garbage-collection pause

我对年轻的gc造成的长时间服务暂停问题感到困扰,其中gc日志之一是:

2018-07-04T22:01:09.296+0800: 12677.097: [GC (Allocation Failure) 2018-07-04T22:01:09.297+0800: 12677.098: [ParNew: 920038K->47441K(943744K), 0.7193147 secs] 2038512K->1187779K(4089472K), 0.7204508 secs] [Times: user=0.29 sys=0.72, real=0.72 secs]

暂停可能在一个小时内发生一次服务时间,服务器的负载始终很低,通常小于0.1,内存足够,没有发生交换,我已经搜索了这个较长的sys time问题,仅发现{{3} } 其中有两个原因:

  • 操作系统问题
  • 与虚拟机有关的问题

但是我不认为它涵盖所有情况。因为我有另一个Java服务,该服务需要在同一服务器上运行更多的堆,而不会在该服务器上受苦。

我的系统是centos 6,内核版本是2.6.32-696.6.3.el6.x86_64,jdk是jdk1.8.0_65,主要的jvm选项是:

-XX:MetaspaceSize = 256M -XX:MaxMetaspaceSize = 256M -Xms4g -Xmx4g -Xmn1g -Xss256k -XX:SurvivorRatio = 8 -XX:MaxTenuringThreshold = 8 -XX:ParallelGCThreads = 8 -XX:+ UseConcMarkSweepGC -XX:+ UseParNewGC

有什么建议吗?谢谢!

编辑:

分页日志:

09:50:01 PM      2.36    573.77    295.95      0.04    636.73      0.00      0.00      0.00      0.00  

10:00:01 PM  pgpgin/s pgpgout/s   fault/s  majflt/s  pgfree/s pgscank/s pgscand/s pgsteal/s    %vmeff

10:00:01 PM      5.39    577.19    496.32      0.08    913.33      0.00      0.00      0.00      0.00

10:10:01 PM     48.39   1425.40    519.28      0.24   1060.78      0.00     18.63     18.61     99.89

10:20:01 PM      1.57   1156.95    386.99      0.02    941.61    104.35      8.11    112.41     99.96

和自由输出:

         total       used       free     shared    buffers     cached

Mem:      65858212   64025056    1833156          0     159476   32796852

-/+ buffers/cache:   31068728   34789484

Swap:     67108860          0   67108860

0 个答案:

没有答案