2013-12-13 27 views
6

這是一個長時間運行的服務器應用程序,它創建了大量短命垃圾,並且在啓動後幾乎沒有任何任務掛起。大多數時候,年輕的gen收集很快,即使是10GB,它幾乎全是垃圾,但是我們偶爾會看到殘酷的異常值。作爲一個潛在的提示,我們正在運行一臺具有更多CPU資源但內存少於12 GB的機器上負載較低的類似配置的服務器。我們在那裏沒有看到這種模式。Java HotSpot極其長時間的年輕收藏

的java -Xms20g -Xmx20g -Xloggc: 「./日誌/ gc.log」 -XX:+ PrintGCDetails -XX:+ PrintGCDateStamps -XX:NewRatio = 1 -XX:+ DisableExplicitGC -XX:+ UseSpinning - XX:PreBlockSpin = 1000 -XX:-UseCounterDecay -XX:+ UseTLAB -XX:+ TieredCompilation -XX:ReservedCodeCacheSize =512米

下面是從GC日誌片段。因爲系統時間很長,因此可以安全地說,它花費全部時間來實際執行GC工作(而不是等待線程達到安全點)。

2013-12-13T14:04:50.388 + 0000:56748.603:[GC [PSYoungGen:10363808K-> 1248K(10421824K)] 10569323K-> 207003K(20907584K),0.0035110秒] [時間:用戶= 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秒] [時間:用戶= 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秒] [時間:用戶= 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.0040800secs] [Times:user = 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秒] [次:用戶= 0.00 SYS = 143.05,實= 14.74秒]

2013-12-13T14:52:50.287 + 0000:59628.502:[GC [PSYoungGen:10397120K-> 11488K(10446720K)] 10604235K-> 218819K (20932480K),0.0127280秒] [時間:用戶= 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.1968100sec] [Times:user = 0.00 sys = 2067.08 ,實際= 211.16秒]

2013-12-13T15:12:04.478 + 0000:60782.693:[GC [PSYoungGen:10408256K-> 15136K(10448064K)] 10625651K-> 232723K(20933824K),0.0147670秒] [時間:用戶= 0.00 sys = 0.12,實際= 0.01秒]

2013-12-13T15:23:02.123 + 0000:61440.338:[GC [PSYoungGen:10426912K-> 12672K(10448768K)] 10644499K-> 232635K [時間:用戶= 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.8134440sec] [Times:user = 1.22 sys = 6.30,real = 0.82秒]

2013-12-13T15:39:25.083 + 0000:62423.298:[GC [PSYoungGen:10421024K-> 6208K(10449344K)] 10648651K-> 235547K(20935104K),0.0087890秒] [時間:用戶= 0.06 sys = 0.00,real = 0。01秒]

2013-12-13T15:47:52.781 + 0000:62930.996:[GC [PSYoungGen:10421952K-> 7200K(10456960K)] 10651291K-> 239123K(20942720K),0.0094460秒] [時間:用戶= 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] [Times:user = 0.08 sys = 0.00,real = 0.01 secs]

上述服務器上的規格是雙4核X5570和48 gb ram。 HTOP顯示使用了15GB,剩下的應用隨時使用超過10GB的應用緩存(終身較少)。這讓我覺得這不是尋呼問題

我指的另一個服務器是雙8核E5-2690與32 GB的內存。雖然上面的服務器是一個非常舊的版本

回答

2

這樣的高sys時間是不尋常的。它可能是干擾與您的系統上的一些其他應用程序/活動?

我想你也應該收集其它系統統計 - vmstatnetstatiostatmpstat,以排除與您的系統上活動的任何干擾或您的GC時間。將那些與YounGen階段相關聯,以查看在YounGen暫停期間是否有任何尖峯。

+0

服務器專用於這個應用程序,這是不可能的,我認爲。你在談論CPU爭用還是別的什麼?我從來沒有在這些盒子上看到太多的負載,我認爲在GC期間從外部應用發生這種事情太巧合... – gbasin

+2

usr時間是0.00,所以它看起來像它在系統上等待資源,實際上並沒有做GC工作...... –

+0

你也可以嘗試升級到jdk7u40並使用Mission控制監視GC嗎? –