这是一个长期运行的服务器应用程序,它会创建大量短暂的垃圾,并且在启动后几乎没有任何终结。大多数时候年轻人的收集速度很快,即使10 gb也很快,因为它几乎都是垃圾,但我们偶尔会看到残酷的异常值。作为潜在的提示,我们在具有更多CPU资源但内存减少12 gb的计算机上以较低负载运行类似配置的服务器。我们没有看到这种模式。
java -Xms20g -Xmx20g -Xloggc:“./ logs / gc.log”-XX:+ PrintGCDetails -XX:+ PrintGCDateStamps -XX:NewRatio = 1 -XX:+ DisableExplicitGC -XX:+ UseSpinning -XX:PreBlockSpin = 1000 -XX:-UseCounterDecay -XX:+ UseTLAB -XX:+ TieredCompilation -XX:ReservedCodeCacheSize = 512m
以下是GC日志的摘录。是否可以说它花费全部时间实际执行GC工作(例如,而不是等待线程达到安全点),因为系统时间也很长?
2013-12-13T14:04:50.388 + 0000:56748.603:[GC [PSYoungGen:10363808K-> 1248K(10421824K)] 10569323K-> 207003K(20907584K),0.0035110 secs] [次:用户= 0.03 sys = 0.00,实际= 0.00秒]
2013-12-13T14:17:32.245 + 0000:57510.460:[GC [PSYoungGen:10363808K-> 1600K(10435072K)] 10569563K-> 207563K(20920832K),0.0038460 secs] [次:用户= 0.04 sys = 0.00,实= 0.01秒]
2013-12-13T14:29:08.572 + 0000:58206.787:[GC [PSYoungGen:10381824K-> 1408K(10430912K)] 10587787K-> 207875K(20916672K),0.0045710 secs] [次:用户= 0.04 sys = 0.00,实= 0.01秒]
2013-12-13T14:36:25.176 + 0000:58643.391:[GC [PSYoungGen:10381632K-> 1600K(10442432K)] 10588099K-> 208371K(20928192K),0.0040800秒] [次:用户= 0.03 sys = 0.00,实际= 0.00秒]
2013-12-13T14:44:04.409 + 0000:59102.624:[GC [PSYoungGen:10397120K-> 1600K(10438848K)] 10603891K-> 208715K(20924608K),14.7387710 secs] [次:用户= 0.00 sys = 143.05,real = 14.74 secs]
2013-12-13T14:52:50.287 + 0000:59628.502:[GC [PSYoungGen:10397120K-> 11488K(10446720K)] 10604235K-> 218819K(20932480K),0.0127280 secs] [次:用户= 0.11 sys = 0.00,实= 0.01秒]
2013-12-13T14:59:34.934 + 0000:60033.149:[GC [PSYoungGen:10418208K-> 1536K(10445760K)] 10625539K-> 218931K(20931520K),211.1968100 secs] [次:用户= 0.00 sys = 2067.08,real = 211.16 secs]
2013-12-13T15:12:04.478 + 0000:60782.693:[GC [PSYoungGen:10408256K-> 15136K(10448064K)] 10625651K-> 232723K(20933824K),0.0147670 secs] [次:用户= 0.00 sys = 0.12,实= 0.01秒]
2013-12-13T15:23:02.123 + 0000:61440.338:[GC [PSYoungGen:10426912K-> 12672K(10448768K)] 10644499K-> 232635K(20934528K),0.0141040 secs] [次:用户= 0.00 sys = 0.12,实= 0.02秒]
2013-12-13T15:31:09.119 + 0000:61927.334:[GC [PSYoungGen:10424448K-> 5280K(10452160K)] 10644411K-> 232907K(20937920K),0.8134440 secs] [次:用户= 1.22 sys = 6.30,真实= 0.82秒]
2013-12-13T15:39:25.083 + 0000:62423.298:[GC [PSYoungGen:10421024K-> 6208K(10449344K)] 10648651K-> 235547K(20935104K),0.0087890 secs] [次:用户= 0.06 sys = 0.00,实= 0.01秒]
2013-12-13T15:47:52.781 + 0000:62930.996:[GC [PSYoungGen:10421952K-> 7200K(10456960K)] 10651291K-> 239123K(20942720K),0.0094460 secs] [次:用户= 0.08 sys = 0.00,实= 0.01秒]
2013-12-13T15:58:18.594 + 0000:63556.809:[GC [PSYoungGen:10433248K-> 6752K(10454848K)] 10665171K-> 242331K(20940608K),0.0091570 secs] [次:用户= 0.08 sys = 0.00,实= 0.01秒]
上面服务器上的规格是带有48 gb ram的双4核X5570。 HTOP显示使用15 gb,其余的使用应用程序缓存,使用10 gb以上的任何时间(tenured很小)。这让我觉得这不是一个分页问题
我所指的另一台服务器是双核8核E5-2690,内存为32 GB。两者都在fedora上运行jre 1.7.0_25,虽然上面的服务器是一个非常旧的版本
答案 0 :(得分:2)
如此高的sys
时间是不寻常的。您的系统上的其他应用/活动可能是干扰吗?
我认为您还应该收集其他系统统计信息 - vmstat
,netstat
,iostat
,mpstat
,以排除任何干扰或您的GC时间与您的活动系统。将这些与YounGen阶段相关联,以查看在YounGen长时间暂停期间是否存在任何尖峰。