2013-12-13 16 views
6

Dies ist eine lange laufende Server-App, die eine Menge von kurzlebigen Müll und fast nichts nach dem Start erstellt erstellt. Die meiste Zeit geht die junge Gen-Sammlung schnell, sogar mit 10 GB ist es schnell, da es fast alles Müll ist, aber wir sehen gelegentlich brutale Ausreißer. Als möglichen Hinweis führen wir einen ähnlich konfigurierten Server mit geringerer Auslastung auf einer Maschine mit mehr CPU-Ressourcen, aber 12 GB weniger Speicher aus. Wir sehen dieses Muster nicht dort.Java HotSpot extrem lange Dauer junge Sammlungen

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

Hier ist ein Ausschnitt aus der GC-Logs. Ist es sicher zu sagen, dass es die ganze Zeit damit verbringt, GC-Arbeit zu leisten (anstatt darauf zu warten, dass beispielsweise Threads Safepoints erreichen), da die sys-Zeit ebenfalls hoch ist?

2013-12-13T14: 04: 50,388 + 0000: 56.748,603: [GC [PSYoungGen: 10363808K-> 1248K (10421824K)] 10569323K-> 207003K (20907584K), 0,0035110 sec] [Zeiten: user = 0,03 sys = 0,00, real = 0.00 sec]

2013-12-13T14: 17: 32,245 + 0000: 57510,460: [GC [PSYoungGen: 10363808K-> 1600K (10435072K)] 10569563K-> 207563K (20920832K), 0,0038460 secs ] [Zeiten: user = 0.04 sys = 0.00, real = 0.01 sec]

2013-12-13T14: 29: 08.572 + 0000: 58206,787: [GC [PSYoungGen: 10381824K-> 1408K (10430912K)] 10587787K-> 207875K (20916672K), 0,0045710 Sekunden] [Times: Benutzer = 0,04 sys = 0,00, real = 0,01 Sekunden]

2013-12-13T14: 36: 25.176 + 0000: 58643.391: [GC [PSYoungGen: 10381632K-> 1600K (10442432K)] 10588099K-> 208371K (20928192K), 0,0040800 Sek.] [Times: user = 0.03 sys = 0.00 , real = 0.00 sec]

2013-12-13T14: 44: 04.409 + 0000: 59102,624: [GC [PSYoungGen: 10397120K-> 1600K (10438848K)] 10603891K-> 208715K (20924608K), 14,7387710 secs] [ Zeiten: user = 0,00 sys = 143,05, real = 14,74 sec]

2013-12-13T14: 52: 50,287 + 0000: 59.628,502: [GC [PSYoungGen: 10397120K-> 11488K (10446720K)] 10604235K-> 218819K (20932480K), 0,0127280 Sekunden] [Times: Benutzer = 0,11 sys = 0,00, real = 0,01 Sekunden]

2013-12-13T14: 59: 34,934 + 0000: 60033,149: [GC [PSYoungGen: 10418208K-> 1536K (10445760K)] 10625539K-> 218931K (20931520K), 211.1968100 Sek.] [Times: user = 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] [ Zeiten: user = 0.00 sys = 0,12, real = 0.01 sec]

2013-12-13T15: 23: 02.123 + 0000: 61440,338: [GC [PSYoungGen: 10426912K-> 12672K (10448768K)] 10644499K-> 232635K (20934528K), 0,0141040 secs] [Zeiten: user = 0.00 sys = 0,12, real = 0.02 secs]

2013-12-13T15: 31: 09.119 + 0000: 61.927,334: [GC [PSYoungGen: 10424448K-> 5280K (10452160K)] 10644411K-> 232907K (20937920K), 0,8134440 sec] [Zeiten: user = 1,22 sys = 6.30, real = 0,82 sec]

2013-12-13T15: 39: 25,083 + 0000: 62.423,298: [GC [PSYoungGen: 10421024K-> 6208K (10449344K)] 10648651K-> 235547K (20935104K), 0,0087890 sec] [Zeiten: Benutzer = 0,06 sys = 0.00, real = 0.01 secs]

2013-12-13T15: 47: 52,781 + 0000: 62930,996: [GC [PSYoungGen: 10421952K-> 7200K (10456960K)] 10651291K-> 239123K (20942720K), 0,0094460 secs] [Zeiten: user = 0,08 sys = 0.00, real = 0.01 sec]

2013-12-13T15: 58: 18,594 + 0000: 63556,809: [GC [PSYoungGen: 10433248K-> 6752K (10454848K)] 10665171K-> 242331K (20940608K), 0,0091570 Sekunden] [Times: user = 0.08 sys = 0.00, real = 0.01 secs]

Spezifikationen auf dem Server oben sind Dual-4-Core-X5570 mit 48 GB RAM. HTOP zeigt 15 GB verwendet, der Rest im Cache mit der App mit etwas mehr als 10 GB zu jeder Zeit (Tenured ist klein). Das lässt mich denken, dass es kein Paging-Problem ist

Der andere Server, auf den ich mich beziehe, ist ein Dual 8-Core E5-2690 mit 32 GB RAM. Beide laufen jre 1.7.0_25 auf Fedora, obwohl der Server oben auf einer sehr alten Version ist

Antwort

2

So hoch sys Zeit ist ungewöhnlich. Könnte es eine Störung mit einigen anderen apps/activites auf Ihrem System sein?

Ich denke, Sie sollten auch andere Systemstatistiken sammeln - vmstat, netstat, iostat, mpstat, mit Aktivitäten auf dem System jede Störung oder Ihre GC Zeit auszuschließen. Korreliere diese mit den YounGen-Phasen, um zu sehen, ob es während dieser langen YounGen-Pausen Spikes gibt.

+0

Die Server sind für diese App gewidmet, es wäre unwahrscheinlich, denke ich. Sprechen Sie über CPU-Konflikte oder etwas anderes? Ich habe noch nie viel Ladung auf diesen Boxen gesehen, ich denke, es wäre zu viel Zufall, dass das von einer externen App während eines GCs passiert ... – gbasin

+2

Die usr-Zeit ist 0,00, also sieht es so aus, als würde es auf einem System warten Ressource, nicht wirklich eine GC-Arbeit ... –

+0

Könnten Sie auch versuchen, auf jdk7u40 upgraden und den GC mit dem Mission Control überwachen? –

Verwandte Themen