12.01.2011gc-tuning, infopoint, jörg wüthrich1 gc-tuning erfahrungsbericht

19
12.01.2011 GC-Tuning, Infopoint, Jörg Wüthrich 1 GC-Tuning Erfahrungsbericht

Upload: gisela-apfel

Post on 05-Apr-2015

109 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 12.01.2011GC-Tuning, Infopoint, Jörg Wüthrich1 GC-Tuning Erfahrungsbericht

12.01.2011 GC-Tuning, Infopoint, Jörg Wüthrich 1

GC-Tuning

Erfahrungsbericht

Page 2: 12.01.2011GC-Tuning, Infopoint, Jörg Wüthrich1 GC-Tuning Erfahrungsbericht

12.01.2011 GC-Tuning, Infopoint, Jörg Wüthrich 2

Themen

• Grundlagen– Java Memory Management– GC-Algorithmen

• GC-Tuning– Erfahrungsbericht

Page 3: 12.01.2011GC-Tuning, Infopoint, Jörg Wüthrich1 GC-Tuning Erfahrungsbericht

12.01.2011 GC-Tuning, Infopoint, Jörg Wüthrich 3

Java Memory Management

• Aufteilung des Speichers

• Begrifflichkeit abhängig von Hersteller– new = young = nursery | old = tenured

Page 4: 12.01.2011GC-Tuning, Infopoint, Jörg Wüthrich1 GC-Tuning Erfahrungsbericht

12.01.2011 GC-Tuning, Infopoint, Jörg Wüthrich 4

Java Memory Management

• minor collections– räumen im young

space auf– Durchführung,

wenn Speicher im young space knapp

– Verschiebung in den old space

Page 5: 12.01.2011GC-Tuning, Infopoint, Jörg Wüthrich1 GC-Tuning Erfahrungsbericht

12.01.2011 GC-Tuning, Infopoint, Jörg Wüthrich 5

Java Memory Management

• Major collections– räumen im old

space auf– werden

durchgeführt, wenn old space knapp wird

Page 6: 12.01.2011GC-Tuning, Infopoint, Jörg Wüthrich1 GC-Tuning Erfahrungsbericht

12.01.2011 GC-Tuning, Infopoint, Jörg Wüthrich 6

Java Memory Management

• Konfiguration (Beispiele)– newRatio

– survivorRatio

Page 7: 12.01.2011GC-Tuning, Infopoint, Jörg Wüthrich1 GC-Tuning Erfahrungsbericht

12.01.2011 GC-Tuning, Infopoint, Jörg Wüthrich 7

GC-Algorithmen

• Serial Collector– der älteste; alles seriell

• Parallel Collector– collection wird parallelisiert -> kürzere Collections

• Parallel Compacting Collector– zusätzlich Defragmentierung des Speichers

• Concurrent Mark+Sweep Collector (CMS)– Collection erfolgt gleichzeitig mit Applikations-Threads

• Generation First Collector (G1)– optimiert, heutige Multiprozessor-Umgebungen auszunützen

Page 8: 12.01.2011GC-Tuning, Infopoint, Jörg Wüthrich1 GC-Tuning Erfahrungsbericht

12.01.2011 GC-Tuning, Infopoint, Jörg Wüthrich 8

GC-Algorithmen• serial <-> parallel mark+compact <-> concurrent

• serial collector

parallel collectorconcurrent mark +

sweep collector (CMS)

Page 9: 12.01.2011GC-Tuning, Infopoint, Jörg Wüthrich1 GC-Tuning Erfahrungsbericht

12.01.2011 GC-Tuning, Infopoint, Jörg Wüthrich 9

Applikation vor Tuning / Umbauproduktiv

Page 10: 12.01.2011GC-Tuning, Infopoint, Jörg Wüthrich1 GC-Tuning Erfahrungsbericht

Applikation vor Tuning / Umbau

12.01.2011 GC-Tuning, Infopoint, Jörg Wüthrich 10

Lasttest

Page 11: 12.01.2011GC-Tuning, Infopoint, Jörg Wüthrich1 GC-Tuning Erfahrungsbericht

12.01.2011 GC-Tuning, Infopoint, Jörg Wüthrich 11

Applikation vor Tuning / nach Umbaunach 40 Min.: Zusammen-bruch der Antwortzeiten

Page 12: 12.01.2011GC-Tuning, Infopoint, Jörg Wüthrich1 GC-Tuning Erfahrungsbericht

12.01.2011 GC-Tuning, Infopoint, Jörg Wüthrich 12

Tuning Massnahmen

• Problem– GC kommt nicht nach mit Aufräumen– viele „stop the world“ Full GCs– Performance sackt ab

• Lösungs-Ansätze– mehr Heap– anderer GC-Algorithmus– Tunen des neuen GC-Algorithmus

Page 13: 12.01.2011GC-Tuning, Infopoint, Jörg Wüthrich1 GC-Tuning Erfahrungsbericht

12.01.2011 GC-Tuning, Infopoint, Jörg Wüthrich 13

neuer GC Algorithmus / mehr Heap

GC: CMS; Heap 2GB-> Test erreicht Grenzbereich nicht

Page 14: 12.01.2011GC-Tuning, Infopoint, Jörg Wüthrich1 GC-Tuning Erfahrungsbericht

Tuning: Grenzbereich suchen

12.01.2011 GC-Tuning, Infopoint, Jörg Wüthrich 14

Concurrent Mode FailureHeap: 1.25 GB

Incremental Mode-> 1 Full GC; stabil?

Page 15: 12.01.2011GC-Tuning, Infopoint, Jörg Wüthrich1 GC-Tuning Erfahrungsbericht

Tuning: langfristig stabil?

12.01.2011 GC-Tuning, Infopoint, Jörg Wüthrich 15

Heap: 1.25 GBIncremental Mode abgeschaltet-> 1 Full GC; stabiler

Page 16: 12.01.2011GC-Tuning, Infopoint, Jörg Wüthrich1 GC-Tuning Erfahrungsbericht

Tuning: langfristig stabil?

12.01.2011 GC-Tuning, Infopoint, Jörg Wüthrich 16

Heap: 1 GBinitMemory = maxMemory

Memory Leak?

Page 17: 12.01.2011GC-Tuning, Infopoint, Jörg Wüthrich1 GC-Tuning Erfahrungsbericht

Tuning: langfristig stabil?

12.01.2011 GC-Tuning, Infopoint, Jörg Wüthrich 17

Heap: 1 GBtiefere Last7h Laufzeit

Page 18: 12.01.2011GC-Tuning, Infopoint, Jörg Wüthrich1 GC-Tuning Erfahrungsbericht

Entscheid: Go• Rahmenbedingungen

– Memory Leak kann nicht ausgeschlossen werden– Server werden täglich neu gestartet; eventuelles

Memory Leak schlägt somit nicht zu– Last in Lasttests ist viel höher, als sie aktuell in

Produktion ist; Situation aus Lasttest wird voraussichtlich nicht erreicht in Produktion

• Weitere Massnahmen– Beobachtung der produktiven Logs nach GoLive– Dann weitere Tuning-Massnahmen falls notwendig

12.01.2011 GC-Tuning, Infopoint, Jörg Wüthrich 18

Page 19: 12.01.2011GC-Tuning, Infopoint, Jörg Wüthrich1 GC-Tuning Erfahrungsbericht

12.01.2011 GC-Tuning, Infopoint, Jörg Wüthrich 19

Ressourcen• http://www.javaworld.com/javaworld/jw-01-2002/jw-

0111-hotspotgc.html - Erklärung zur Memory-Aufteilung und Funktionsweise der GC

• http://java.sun.com/developer/technicalArticles/Programming/turbo/ - Tuning mit parallelem und concurrent GC

• http://www.oracle.com/technetwork/java/javase/tech/memorymanagement-whitepaper-1-150020.pdf - Basiswissen für GC-Tuning

• http://www.oracle.com/technetwork/java/javase/tech/index-jsp-140228.html - alle offiziellen Links zur GC

• http://www.ibm.com/developerworks/java/library/j-ibmtools2/index.html - IBM Garbage Collection and Memory Visualizer