SlideShare ist ein Scribd-Unternehmen logo
1 von 45
Downloaden Sie, um offline zu lesen
Mist gemessen?
 Java Performance und Memory Analyse


Dr. Halil-Cem Gürsoy
             adesso AG
Der Referent

• Insgesamt über 10 Jahre Beratung und Entwicklung
  rund um Java, davor Entwicklung im
  Forschungsumfeld
• Senior Software Engineer bei adesso AG, Dortmund
• Schwerpunkt EAI und SOA-Projekte im JEE
  Umfeld, aber auch klassische JEE-Projekte
• Autor und Referent auf Konferenzen




Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse   2
Agenda

• Über das Messen
• Performance
• Messungen bei Performance-Problemen
  • Manuell
  • JVisualVM
• Memory-Probleme
  • JVisualVM
  • MAT
  • IBM Heap Dump Analyzer




Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse   3
Agenda

• Über das Messen
• Performance
• Messungen bei Performance-Problemen
  • Manuell
  • JVisualVM
• Memory-Probleme
  • JVisualVM
  • MAT
  • IBM Heap Dump Analyzer




Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse   4
Was ist „Messen“?

 Eine Messung ist das Ausführen von geplanten
 Tätigkeiten zu einer quantitativen Aussage über eine
 Messgröße durch Vergleich mit einer Einheit. Dabei
 ist die Messgröße jene physikalische Größe, der die
 Messung gilt. Die Bezeichnungen für die
 Messtechnik werden in der DIN-Norm DIN 1319
 definiert.
Quelle: wikipedia.de




Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse   5
Wie wird gemessen?

• Was ist das Messproblem?
• In welcher Einheit wird gemessen?
• Messeinrichtung / Messgerät
• Kalibirierung
• Messablauf definieren
• Durchführung und Messergebnis
• Fehlerrechnung (Messunsicherheiten, Fehlergrenzen
  usw.)




Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse   6
Ein paar Anregungen…

• Ein beobachtetes System verändert sich durch die
  Messung
• Heisenbergsche Unschärferelation
  • Ort und Impuls nicht gleichzeitig exakt messbar



• „Quantenselbsmord“
  • Schrödingers Katze etwas weiterentwickelt
  • Der selbstmordende Wissenschaftlicher ist am Ende „nur ein
     bisschen Tot“
  • Also lebt Elvis doch… wenn auch nur ein bisschen!

Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse   7
Agenda

• Über das Messen
• Performance
• Messungen bei Performance-Problemen
  • Manuell
  • JVisualVM
• Memory-Probleme
  • JVisualVM
  • MAT
  • IBM Heap Dump Analyzer




Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse   8
"Performance"

• WAS ist „Performance“?
• „Gefühlte Performance“
• Durchsatz – z.B.
  • Transaktionen / sec.
  • Anzahl verarbeitete Nachrichten,
  • Einhaltung von „Zeitfenstern“
  • Häufig nichtfunktionale Anforderungen im Projekt


• Viele Wege zum Messen…



Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse   9
Toolbasiertes Stressen & Messen

• Diverse freie Tools zum „Vermessen“ von
  Applikationen:
  • JMeter
  • Grinder
  • OpenSTA
  • Derivate von JUnit
• Messungen eher „Grobgranular“
• Aufruf „Seite XY“ oder „ServiceZ“ dauert zu lange




Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse   10
JMeter…

• …kann mehr als nur Web-Applikationen vermessen:
  • Datenbankzugriffe
  • JMS
  • Webservices
• Leicht zu erweitern




Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse   11
Agenda

• Über das Messen
• Performance
• Messungen bei Performance-Problemen
  • Manuell
  • JVisualVM
• Memory-Probleme
  • JVisualVM
  • MAT
  • IBM Heap Dump Analyzer




Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse   12
Ursachenforschung…

• Tatsächlich alles richtig gemessen… (?)

• Ergebnis: es gibt tatsächlich ein Performance-
  Problem

• Was ist die Ursache?




Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse   13
Wo geht die Zeit verloren?

• Es kann viele Ursachen geben
• „Schlechter Code“
  • Blick in diverse Antipattern Blogs / Artikel / Bücher
  • Klassiker
     • String, StringBuffer
     • compareTo()
     • resultSet.close()
     • XML-Parser
     • JNDI Lookups
     • JDBC


Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse   14
Manuell Messen

• Auswertung von Logfiles
  • Zeiten zwischen Logausgaben
  • Gezielte Logausgaben mit Zeitangaben
  • AOP / Interceptoren
  • Aufwändige Analyse, schwer Daten zu aggregieren
     @|03.09.2010 16:59:15.899|[[ACTIVE] ExecuteThread: '6' for queue:
     'weblogic.kernel.Default (self-
     tuning)']|DEBUG|CorrID[9d4e92197bc54b6f]|de.adesso.hgu.hcex.busines
     s.interceptor.ProfilingInterceptor|profile|46|Methode 'public long
     de.adesso.hgu.hcex.facade.SimpleBean.validate(de.adesso.hgu.hcex.ut
     il.MDCWrapper,java.lang.String) throws
     de.adesso.hgu.hcex.business.exception.ValidationException'
     ausgefuehrt in 76ms


Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse   15
Eine Datenbank mit I/O-Problemen




Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse   16
Agenda

• Über das Messen
• Performance
• Messungen bei Performance-Problemen
  • Manuell
  • JVisualVM
• Memory-Probleme
  • JVisualVM
  • MAT
  • IBM Heap Dump Analyzer




Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse   17
JVisualVM

• Es gibt viele Tools, z.B. JProbe u.a.
• JVM TI ist neue Schnittstelle innerhalb der JVM
• Geschenkt: JVisiualVM
• Teil der SUN JDK und unter
  https://visualvm.dev.java.net/
• Features
  • Konfiguration der Applikations-Runtime
  • Performance Monitor
  • Memory Monitor
  • Thread Monitor
  • Offline Analyse

Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse   18
JVisualVM – Verbinden

• Lokale, laufende JVM‘s unter dem gleichen User
  werden automatisch gefunden
• Remote-JVM‘s
  • Starten von jstatd auf dem Remote-System. Muss unter dem
     gleichen User wie die JVM laufen
  • Starten der Applikation mit den Systemparametern
     • com.sun.management.jmxremote.port
     • com.sun.management.jmxremote.ssl
     • com.sun.management.jmxremote.authenticate




Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse   19
Monitoren der Basisdaten




Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse   20
Tomcat unter Last




Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse   21
Threads




Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse   22
Sampler




Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse   23
Tomcat…

• Simple Methode um CPU und Speicher zu
  verbrauchen:

  public static String generateLongString() {
    String result = new String();
    for (int i = 0; i < 10000; i++) {
        result = result + "dummy" + i + "<br>";
    }
    return result;
  }




Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse   24
Sampler-Ergebnis




Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse   25
Agenda

• Über das Messen
• Performance
• Messungen bei Performance-Problemen
  • Manuell
  • JVisualVM
• Memory-Probleme
  • JVisualVM
  • MAT
  • IBM Heap Dump Analyzer




Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse   26
Memory Probleme

• Häufig treten Memory und Performance-Probleme
  gemeinsam auf
• Memory-Probleme werden in der Entwicklung noch
  häufiger ignoriert als Performance-Probleme
  • Testumgebungen laufen nicht lang genug
  • zu wenig Testdaten
• Analyse in einer produktiven Umgebung schwierig
• Häufig beobachtete Dauer-Zwischenlösung
  • Application Server Reboots (täglich, stündlich…)




Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse   27
Heap Dumps

• Wichtiges Werkezeug um aktuelle Speichersitaution
  einzufangen und zu analysieren
• Heap Dumps erzeugen mit…
  • -XX:-HeapDumpOnOutOfMemoryError und dazugehörige
     Optionen
     • erzeugt Heap Dumps bei einer OOME
  • Jmap , JConsole, JVisualVM – Teile der SUN JDK
  • Über JMX
  • Tastenkombinationen




Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse   28
GC und Performance

• GC kostet CPU-Zeit
• Sichtbar: „die Welt steht“ („Stop the World“)
• Es gibt verschiedene GC‘s
  • leider immer noch eine Erwähnung wert!
  • Default-Einstellungen abhängig von System, CPU &
     Speicher
• Abhängig vom Einsatzszenario
• Durchsatzoptimiert = „Stop the World“
• Ziel: Minimierte Pausen
  • kostet aber Durchsatz!
  • auch in G1 (wenn auch kurz)

Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse   29
Agenda

• Über das Messen
• Performance
• Messungen bei Performance-Problemen
  • Manuell
  • JVisualVM
• Memory-Probleme
  • JVisualVM
  • MAT
  • IBM Heap Dump Analyzer




Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse   30
Sampler… String in Session




Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse   31
GC in JVisualVM




Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse   32
Agenda

• Über das Messen
• Performance
• Messungen bei Performance-Problemen
  • Manuell
  • JVisualVM
• Memory-Probleme
  • JVisualVM
  • MAT
  • IBM Heap Dump Analyzer




Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse   33
Eclipse Memory Analyzer (MAT)

• Standalone (RCP) und als Plugin
• Bei großen Heap Dumps RCP mit hohen Memory-
  Settings verwenden, sonst schnell OOME !
• Kann Heap Dumps von SUN & IBM JDK‘s
  auswerten
• Ähnlich JVisualVM anfordern von Heap Dumps
• Unterstützt OQL (Object Query Language)




Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse   34
MAT – Overview




Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse   35
MAT

• Leak Suspects Report
  • Analysiert Heap Dump nach möglichen Memory Leaks
• Top Components
  • Alle Komponenten die > 1% des Heaps belegen
• Component Report
  • Identifiziert z.B. vervielfachte Strings, leere Collections usw.
• Histogramm / Dominator Tree
  • Speicherverbrauch herunter gebrochen auf einzelne
     Instanzen




Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse   36
MAT – Domintor Tree




Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse   37
MAT – OQL

• Mit Hilfe von OQL
  ist gezielte Suche
  nach
  Speicherverbrauch
  von bestimmten
  Objekten möglich
• Syntax sehr
  einfach… analog
  SQL




Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse   38
MAT – Viele Funktionen

• MAT bietet sehr viel Funktionalität
  • Suche nach GC Roots
  • Referenz-Zusammenfassungen
  • Ggfs. wichtige Hinweise warum ein Objekt nicht
     weggeräumt wird!
• Für schnelle Analysen sind die Reports geeignet
• Tiefergehende Analysen benötigen einiges an
  Einarbeitung




Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse   39
Agenda

• Über das Messen
• Performance
• Messungen bei Performance-Problemen
  • Manuell
  • JVisualVM
• Memory-Probleme
  • JVisualVM
  • MAT
  • IBM Heap Dump Analyzer




Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse   40
IBM Heap Dump Anaylzer

• “IBM Thread and Monitor Dump Analyzer for
  Java”
  • http://www.alphaworks.ibm.com/tech/jca
• Mein “Favorit“ für schnelle Analysen
• Unterstützt (inzwischen) SUN & IBM JDK Heap
  Dumps im hprof-Format
• Bietet suche nach Leaks
• Übersichtlich, aber nicht so detailverliebt wie MAT
  = Pragmatisch



Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse   41
IBM HDA




Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse   42
Weitere Tools (teilweise veraltet)

• IBM Diagnostic Tool for Java Garbage Collector
  • Für IBM JDK
  • http://www.alphaworks.ibm.com/tech/gcdiag
• jhat – Heap Dump Browser, Teil der SUN JDK
• Jconsole – Teil der SUN JDK
  • Funktionalität durch JVisualVM abgedeckt
• HPROF
  • http://java.sun.com/developer/technicalArticles/Programmin
     g/HPROF.html
  • Sehr rudimentäres Profiling-Tool, Analyse mit perfanal
  • Option -Xrunhprof

Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse   43
Vielen Dank!

Dr. Halil-Cem Gürsoy
                 adesso AG
 halil-cem.guersoy [at] adesso.de & @hgutwit
adesso AG

• Sponsor Herbstcampus 2010
• Mitarbeiter
  • Über 750 Mitarbeiter in der adesso Group
• Umsatz
  • Umsatzerwartung 2010: > 79 Mio. Euro
• Auszeichnungen
  • Platz 18 der deutschen Top-25 Beratungs- und
    Systemintegrationsunternehmen (Lünendonk-Liste 2010)
  • Top Job (2008)
  • Deutschlands beste Arbeitgeber (2005 und 2010)
• Standorte in Dortmund, Köln, Aachen, Stuttgart,
  Hamburg, Berlin, Frankfurt, München sowie in der
  Schweiz und Österreich
Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse   45

Weitere ähnliche Inhalte

Andere mochten auch

FMK2015: FileMaker Grundlagen Formeln by Longin Ziegler
FMK2015: FileMaker Grundlagen Formeln by Longin ZieglerFMK2015: FileMaker Grundlagen Formeln by Longin Ziegler
FMK2015: FileMaker Grundlagen Formeln by Longin ZieglerVerein FM Konferenz
 
Flyer studie online-konflikte
Flyer studie online-konflikteFlyer studie online-konflikte
Flyer studie online-konflikteJFF_de
 
Relationship chart kraft graf von hohenlohe:gordon henry kraft
Relationship chart kraft graf von hohenlohe:gordon henry kraftRelationship chart kraft graf von hohenlohe:gordon henry kraft
Relationship chart kraft graf von hohenlohe:gordon henry kraftGordon Kraft
 
FMK2014: Visuelle Darstellung im FileMaker by Matthias Wuttke
FMK2014: Visuelle Darstellung im FileMaker by Matthias Wuttke FMK2014: Visuelle Darstellung im FileMaker by Matthias Wuttke
FMK2014: Visuelle Darstellung im FileMaker by Matthias Wuttke Verein FM Konferenz
 
FMK2015: FileMaker 14 Webdirect by Michael Valentin
FMK2015: FileMaker 14 Webdirect by Michael ValentinFMK2015: FileMaker 14 Webdirect by Michael Valentin
FMK2015: FileMaker 14 Webdirect by Michael ValentinVerein FM Konferenz
 
Magistrale 1300927 share
Magistrale 1300927 shareMagistrale 1300927 share
Magistrale 1300927 shareStefan Blaas
 
Social Media Atlas 2011
Social Media Atlas 2011Social Media Atlas 2011
Social Media Atlas 2011Faktenkontor
 
FMK2014: MBS FileMaker Plugin by Christian Schmitz (sponsored Session)
FMK2014: MBS FileMaker Plugin by Christian Schmitz (sponsored Session)FMK2014: MBS FileMaker Plugin by Christian Schmitz (sponsored Session)
FMK2014: MBS FileMaker Plugin by Christian Schmitz (sponsored Session)Verein FM Konferenz
 
Art & Arg
Art & ArgArt & Arg
Art & Argariga83
 
Blizzard bossland 2
Blizzard bossland 2Blizzard bossland 2
Blizzard bossland 2kingchddg90
 
Hands On Workshop: Google Tools
Hands On Workshop: Google ToolsHands On Workshop: Google Tools
Hands On Workshop: Google ToolsSophie Schaper
 
energiehoch3 Produktvorteile
energiehoch3 Produktvorteileenergiehoch3 Produktvorteile
energiehoch3 Produktvorteileenergiehoch3
 

Andere mochten auch (18)

Engel - Angels
Engel - AngelsEngel - Angels
Engel - Angels
 
ñññ333
ñññ333ñññ333
ñññ333
 
Tech int1 1
Tech int1 1Tech int1 1
Tech int1 1
 
FMK2015: FileMaker Grundlagen Formeln by Longin Ziegler
FMK2015: FileMaker Grundlagen Formeln by Longin ZieglerFMK2015: FileMaker Grundlagen Formeln by Longin Ziegler
FMK2015: FileMaker Grundlagen Formeln by Longin Ziegler
 
Flyer studie online-konflikte
Flyer studie online-konflikteFlyer studie online-konflikte
Flyer studie online-konflikte
 
IFC Ebert Tagung Instandhaltung 2015
IFC Ebert Tagung Instandhaltung 2015IFC Ebert Tagung Instandhaltung 2015
IFC Ebert Tagung Instandhaltung 2015
 
Relationship chart kraft graf von hohenlohe:gordon henry kraft
Relationship chart kraft graf von hohenlohe:gordon henry kraftRelationship chart kraft graf von hohenlohe:gordon henry kraft
Relationship chart kraft graf von hohenlohe:gordon henry kraft
 
FMK2014: Visuelle Darstellung im FileMaker by Matthias Wuttke
FMK2014: Visuelle Darstellung im FileMaker by Matthias Wuttke FMK2014: Visuelle Darstellung im FileMaker by Matthias Wuttke
FMK2014: Visuelle Darstellung im FileMaker by Matthias Wuttke
 
FMK2015: FileMaker 14 Webdirect by Michael Valentin
FMK2015: FileMaker 14 Webdirect by Michael ValentinFMK2015: FileMaker 14 Webdirect by Michael Valentin
FMK2015: FileMaker 14 Webdirect by Michael Valentin
 
Magistrale 1300927 share
Magistrale 1300927 shareMagistrale 1300927 share
Magistrale 1300927 share
 
MLDM Appmusik - Gyro
MLDM Appmusik - GyroMLDM Appmusik - Gyro
MLDM Appmusik - Gyro
 
Social Media Atlas 2011
Social Media Atlas 2011Social Media Atlas 2011
Social Media Atlas 2011
 
FMK2014: MBS FileMaker Plugin by Christian Schmitz (sponsored Session)
FMK2014: MBS FileMaker Plugin by Christian Schmitz (sponsored Session)FMK2014: MBS FileMaker Plugin by Christian Schmitz (sponsored Session)
FMK2014: MBS FileMaker Plugin by Christian Schmitz (sponsored Session)
 
Art & Arg
Art & ArgArt & Arg
Art & Arg
 
Blizzard bossland 2
Blizzard bossland 2Blizzard bossland 2
Blizzard bossland 2
 
Miss
MissMiss
Miss
 
Hands On Workshop: Google Tools
Hands On Workshop: Google ToolsHands On Workshop: Google Tools
Hands On Workshop: Google Tools
 
energiehoch3 Produktvorteile
energiehoch3 Produktvorteileenergiehoch3 Produktvorteile
energiehoch3 Produktvorteile
 

Ähnlich wie Mist gemessen? Java Performance und Memory Analyse

Monitoring und Profiling von Java-Anwendungen
Monitoring und Profiling von Java-AnwendungenMonitoring und Profiling von Java-Anwendungen
Monitoring und Profiling von Java-Anwendungengedoplan
 
Crowdcode hitchhikers guide to java performance
Crowdcode hitchhikers guide to java performanceCrowdcode hitchhikers guide to java performance
Crowdcode hitchhikers guide to java performancegedoplan
 
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, OehmichenJFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, OehmichenOdilo Oehmichen
 
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, OehmichenJFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, OehmichenPatrick Baumgartner
 
JSF meets JS (2. ed.) - JSF-Komponenten mit JavaScript
JSF meets JS (2. ed.) - JSF-Komponenten mit JavaScriptJSF meets JS (2. ed.) - JSF-Komponenten mit JavaScript
JSF meets JS (2. ed.) - JSF-Komponenten mit JavaScriptOPEN KNOWLEDGE GmbH
 
BED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als EntwicklerBED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als EntwicklerPatrick Baumgartner
 
2005 - NRW Conf: Design, Entwicklung und Tests
2005 - NRW Conf: Design, Entwicklung und Tests2005 - NRW Conf: Design, Entwicklung und Tests
2005 - NRW Conf: Design, Entwicklung und TestsDaniel Fisher
 
95 Prozent brauchen es, 5 Prozent machen es: Load Testing mit VS leicht gemacht
95 Prozent brauchen es, 5 Prozent machen es: Load Testing mit VS leicht gemacht95 Prozent brauchen es, 5 Prozent machen es: Load Testing mit VS leicht gemacht
95 Prozent brauchen es, 5 Prozent machen es: Load Testing mit VS leicht gemachtNico Orschel
 
Agile Teamarbeit - wie Startups Projekte managen und die Zusammenarbeit fördern
Agile Teamarbeit - wie Startups Projekte managen und die Zusammenarbeit fördernAgile Teamarbeit - wie Startups Projekte managen und die Zusammenarbeit fördern
Agile Teamarbeit - wie Startups Projekte managen und die Zusammenarbeit fördernSascha Böhr
 
Funktionstests in SAP
Funktionstests in SAPFunktionstests in SAP
Funktionstests in SAPCadaxo GmbH
 
Durchgestartet? Eine Einführung in die Google App Engine / Java - Reloaded!
Durchgestartet? Eine Einführung in die Google App Engine / Java - Reloaded!Durchgestartet? Eine Einführung in die Google App Engine / Java - Reloaded!
Durchgestartet? Eine Einführung in die Google App Engine / Java - Reloaded!adesso AG
 
iOS Testautomation bei mobile.de
iOS Testautomation bei mobile.deiOS Testautomation bei mobile.de
iOS Testautomation bei mobile.deHolger Hammel
 
Rails und Scrum in großen Projekten
Rails und Scrum in großen ProjektenRails und Scrum in großen Projekten
Rails und Scrum in großen ProjektenPhillip Oertel
 
Simon Meggle - Open Source End2End Monitoring with Sakuli and Nagios
Simon Meggle - Open Source End2End Monitoring with Sakuli and Nagios Simon Meggle - Open Source End2End Monitoring with Sakuli and Nagios
Simon Meggle - Open Source End2End Monitoring with Sakuli and Nagios simmerl121
 
OOP 2012 - Udo Pracht - DevOps Einführung und Überblick
OOP 2012 - Udo Pracht - DevOps Einführung und ÜberblickOOP 2012 - Udo Pracht - DevOps Einführung und Überblick
OOP 2012 - Udo Pracht - DevOps Einführung und ÜberblickUdo Pracht
 
Einführung Vorgehensmodelle und Agile Software Entwicklung
Einführung Vorgehensmodelle und Agile Software EntwicklungEinführung Vorgehensmodelle und Agile Software Entwicklung
Einführung Vorgehensmodelle und Agile Software EntwicklungChristian Baranowski
 

Ähnlich wie Mist gemessen? Java Performance und Memory Analyse (20)

Monitoring und Profiling von Java-Anwendungen
Monitoring und Profiling von Java-AnwendungenMonitoring und Profiling von Java-Anwendungen
Monitoring und Profiling von Java-Anwendungen
 
Crowdcode hitchhikers guide to java performance
Crowdcode hitchhikers guide to java performanceCrowdcode hitchhikers guide to java performance
Crowdcode hitchhikers guide to java performance
 
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, OehmichenJFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
 
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, OehmichenJFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
 
JavaScript Performance
JavaScript PerformanceJavaScript Performance
JavaScript Performance
 
JSF meets JS (2. ed.) - JSF-Komponenten mit JavaScript
JSF meets JS (2. ed.) - JSF-Komponenten mit JavaScriptJSF meets JS (2. ed.) - JSF-Komponenten mit JavaScript
JSF meets JS (2. ed.) - JSF-Komponenten mit JavaScript
 
BED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als EntwicklerBED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als Entwickler
 
2005 - NRW Conf: Design, Entwicklung und Tests
2005 - NRW Conf: Design, Entwicklung und Tests2005 - NRW Conf: Design, Entwicklung und Tests
2005 - NRW Conf: Design, Entwicklung und Tests
 
95 Prozent brauchen es, 5 Prozent machen es: Load Testing mit VS leicht gemacht
95 Prozent brauchen es, 5 Prozent machen es: Load Testing mit VS leicht gemacht95 Prozent brauchen es, 5 Prozent machen es: Load Testing mit VS leicht gemacht
95 Prozent brauchen es, 5 Prozent machen es: Load Testing mit VS leicht gemacht
 
Agile Teamarbeit - wie Startups Projekte managen und die Zusammenarbeit fördern
Agile Teamarbeit - wie Startups Projekte managen und die Zusammenarbeit fördernAgile Teamarbeit - wie Startups Projekte managen und die Zusammenarbeit fördern
Agile Teamarbeit - wie Startups Projekte managen und die Zusammenarbeit fördern
 
Die Java Plattform Strategie
Die Java Plattform StrategieDie Java Plattform Strategie
Die Java Plattform Strategie
 
Scaling Rails
Scaling RailsScaling Rails
Scaling Rails
 
Funktionstests in SAP
Funktionstests in SAPFunktionstests in SAP
Funktionstests in SAP
 
Durchgestartet? Eine Einführung in die Google App Engine / Java - Reloaded!
Durchgestartet? Eine Einführung in die Google App Engine / Java - Reloaded!Durchgestartet? Eine Einführung in die Google App Engine / Java - Reloaded!
Durchgestartet? Eine Einführung in die Google App Engine / Java - Reloaded!
 
iOS Testautomation bei mobile.de
iOS Testautomation bei mobile.deiOS Testautomation bei mobile.de
iOS Testautomation bei mobile.de
 
Rails und Scrum in großen Projekten
Rails und Scrum in großen ProjektenRails und Scrum in großen Projekten
Rails und Scrum in großen Projekten
 
Ec13 xpages-basic
Ec13 xpages-basicEc13 xpages-basic
Ec13 xpages-basic
 
Simon Meggle - Open Source End2End Monitoring with Sakuli and Nagios
Simon Meggle - Open Source End2End Monitoring with Sakuli and Nagios Simon Meggle - Open Source End2End Monitoring with Sakuli and Nagios
Simon Meggle - Open Source End2End Monitoring with Sakuli and Nagios
 
OOP 2012 - Udo Pracht - DevOps Einführung und Überblick
OOP 2012 - Udo Pracht - DevOps Einführung und ÜberblickOOP 2012 - Udo Pracht - DevOps Einführung und Überblick
OOP 2012 - Udo Pracht - DevOps Einführung und Überblick
 
Einführung Vorgehensmodelle und Agile Software Entwicklung
Einführung Vorgehensmodelle und Agile Software EntwicklungEinführung Vorgehensmodelle und Agile Software Entwicklung
Einführung Vorgehensmodelle und Agile Software Entwicklung
 

Mehr von adesso AG

SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)adesso AG
 
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMPSNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMPadesso AG
 
Mythos High Performance Teams
Mythos High Performance TeamsMythos High Performance Teams
Mythos High Performance Teamsadesso AG
 
A Business-Critical SharePoint Solution From adesso AG
A Business-CriticalSharePoint SolutionFrom adesso AGA Business-CriticalSharePoint SolutionFrom adesso AG
A Business-Critical SharePoint Solution From adesso AGadesso AG
 
Was Sie über NoSQL Datenbanken wissen sollten!
Was Sie über NoSQL Datenbanken wissen sollten!Was Sie über NoSQL Datenbanken wissen sollten!
Was Sie über NoSQL Datenbanken wissen sollten!adesso AG
 
Continuous Delivery praktisch
Continuous Delivery praktischContinuous Delivery praktisch
Continuous Delivery praktischadesso AG
 
Agilität, Snapshots und Continuous Delivery
Agilität, Snapshots und Continuous DeliveryAgilität, Snapshots und Continuous Delivery
Agilität, Snapshots und Continuous Deliveryadesso AG
 
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?adesso AG
 
Getriebene Anwendungslandschaften
Getriebene AnwendungslandschaftenGetriebene Anwendungslandschaften
Getriebene Anwendungslandschaftenadesso AG
 
Google App Engine JAX PaaS Parade 2013
Google App Engine JAX PaaS Parade 2013Google App Engine JAX PaaS Parade 2013
Google App Engine JAX PaaS Parade 2013adesso AG
 
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)adesso AG
 
OOP 2013 NoSQL Suche
OOP 2013 NoSQL SucheOOP 2013 NoSQL Suche
OOP 2013 NoSQL Sucheadesso AG
 
NoSQL in der Cloud - Why?
NoSQL in der Cloud -  Why?NoSQL in der Cloud -  Why?
NoSQL in der Cloud - Why?adesso AG
 
Lean web architecture mit jsf 2.0, cdi & co.
Lean web architecture mit jsf 2.0, cdi & co.Lean web architecture mit jsf 2.0, cdi & co.
Lean web architecture mit jsf 2.0, cdi & co.adesso AG
 
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDISchlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDIadesso AG
 
Zehn Hinweise für Architekten
Zehn Hinweise für ArchitektenZehn Hinweise für Architekten
Zehn Hinweise für Architektenadesso AG
 
Agile Praktiken
Agile PraktikenAgile Praktiken
Agile Praktikenadesso AG
 
Java und Cloud - nicht nur mit PaaS
Java und Cloud - nicht nur mit PaaS Java und Cloud - nicht nur mit PaaS
Java und Cloud - nicht nur mit PaaS adesso AG
 
Neue EBusiness Perspektiven durch HTML5
Neue EBusiness Perspektiven durch HTML5Neue EBusiness Perspektiven durch HTML5
Neue EBusiness Perspektiven durch HTML5adesso AG
 
CloudConf2011 Introduction to Google App Engine
CloudConf2011 Introduction to Google App EngineCloudConf2011 Introduction to Google App Engine
CloudConf2011 Introduction to Google App Engineadesso AG
 

Mehr von adesso AG (20)

SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
 
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMPSNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
 
Mythos High Performance Teams
Mythos High Performance TeamsMythos High Performance Teams
Mythos High Performance Teams
 
A Business-Critical SharePoint Solution From adesso AG
A Business-CriticalSharePoint SolutionFrom adesso AGA Business-CriticalSharePoint SolutionFrom adesso AG
A Business-Critical SharePoint Solution From adesso AG
 
Was Sie über NoSQL Datenbanken wissen sollten!
Was Sie über NoSQL Datenbanken wissen sollten!Was Sie über NoSQL Datenbanken wissen sollten!
Was Sie über NoSQL Datenbanken wissen sollten!
 
Continuous Delivery praktisch
Continuous Delivery praktischContinuous Delivery praktisch
Continuous Delivery praktisch
 
Agilität, Snapshots und Continuous Delivery
Agilität, Snapshots und Continuous DeliveryAgilität, Snapshots und Continuous Delivery
Agilität, Snapshots und Continuous Delivery
 
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
 
Getriebene Anwendungslandschaften
Getriebene AnwendungslandschaftenGetriebene Anwendungslandschaften
Getriebene Anwendungslandschaften
 
Google App Engine JAX PaaS Parade 2013
Google App Engine JAX PaaS Parade 2013Google App Engine JAX PaaS Parade 2013
Google App Engine JAX PaaS Parade 2013
 
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)
 
OOP 2013 NoSQL Suche
OOP 2013 NoSQL SucheOOP 2013 NoSQL Suche
OOP 2013 NoSQL Suche
 
NoSQL in der Cloud - Why?
NoSQL in der Cloud -  Why?NoSQL in der Cloud -  Why?
NoSQL in der Cloud - Why?
 
Lean web architecture mit jsf 2.0, cdi & co.
Lean web architecture mit jsf 2.0, cdi & co.Lean web architecture mit jsf 2.0, cdi & co.
Lean web architecture mit jsf 2.0, cdi & co.
 
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDISchlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
 
Zehn Hinweise für Architekten
Zehn Hinweise für ArchitektenZehn Hinweise für Architekten
Zehn Hinweise für Architekten
 
Agile Praktiken
Agile PraktikenAgile Praktiken
Agile Praktiken
 
Java und Cloud - nicht nur mit PaaS
Java und Cloud - nicht nur mit PaaS Java und Cloud - nicht nur mit PaaS
Java und Cloud - nicht nur mit PaaS
 
Neue EBusiness Perspektiven durch HTML5
Neue EBusiness Perspektiven durch HTML5Neue EBusiness Perspektiven durch HTML5
Neue EBusiness Perspektiven durch HTML5
 
CloudConf2011 Introduction to Google App Engine
CloudConf2011 Introduction to Google App EngineCloudConf2011 Introduction to Google App Engine
CloudConf2011 Introduction to Google App Engine
 

Mist gemessen? Java Performance und Memory Analyse

  • 1. Mist gemessen? Java Performance und Memory Analyse Dr. Halil-Cem Gürsoy adesso AG
  • 2. Der Referent • Insgesamt über 10 Jahre Beratung und Entwicklung rund um Java, davor Entwicklung im Forschungsumfeld • Senior Software Engineer bei adesso AG, Dortmund • Schwerpunkt EAI und SOA-Projekte im JEE Umfeld, aber auch klassische JEE-Projekte • Autor und Referent auf Konferenzen Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse 2
  • 3. Agenda • Über das Messen • Performance • Messungen bei Performance-Problemen • Manuell • JVisualVM • Memory-Probleme • JVisualVM • MAT • IBM Heap Dump Analyzer Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse 3
  • 4. Agenda • Über das Messen • Performance • Messungen bei Performance-Problemen • Manuell • JVisualVM • Memory-Probleme • JVisualVM • MAT • IBM Heap Dump Analyzer Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse 4
  • 5. Was ist „Messen“? Eine Messung ist das Ausführen von geplanten Tätigkeiten zu einer quantitativen Aussage über eine Messgröße durch Vergleich mit einer Einheit. Dabei ist die Messgröße jene physikalische Größe, der die Messung gilt. Die Bezeichnungen für die Messtechnik werden in der DIN-Norm DIN 1319 definiert. Quelle: wikipedia.de Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse 5
  • 6. Wie wird gemessen? • Was ist das Messproblem? • In welcher Einheit wird gemessen? • Messeinrichtung / Messgerät • Kalibirierung • Messablauf definieren • Durchführung und Messergebnis • Fehlerrechnung (Messunsicherheiten, Fehlergrenzen usw.) Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse 6
  • 7. Ein paar Anregungen… • Ein beobachtetes System verändert sich durch die Messung • Heisenbergsche Unschärferelation • Ort und Impuls nicht gleichzeitig exakt messbar • „Quantenselbsmord“ • Schrödingers Katze etwas weiterentwickelt • Der selbstmordende Wissenschaftlicher ist am Ende „nur ein bisschen Tot“ • Also lebt Elvis doch… wenn auch nur ein bisschen! Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse 7
  • 8. Agenda • Über das Messen • Performance • Messungen bei Performance-Problemen • Manuell • JVisualVM • Memory-Probleme • JVisualVM • MAT • IBM Heap Dump Analyzer Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse 8
  • 9. "Performance" • WAS ist „Performance“? • „Gefühlte Performance“ • Durchsatz – z.B. • Transaktionen / sec. • Anzahl verarbeitete Nachrichten, • Einhaltung von „Zeitfenstern“ • Häufig nichtfunktionale Anforderungen im Projekt • Viele Wege zum Messen… Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse 9
  • 10. Toolbasiertes Stressen & Messen • Diverse freie Tools zum „Vermessen“ von Applikationen: • JMeter • Grinder • OpenSTA • Derivate von JUnit • Messungen eher „Grobgranular“ • Aufruf „Seite XY“ oder „ServiceZ“ dauert zu lange Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse 10
  • 11. JMeter… • …kann mehr als nur Web-Applikationen vermessen: • Datenbankzugriffe • JMS • Webservices • Leicht zu erweitern Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse 11
  • 12. Agenda • Über das Messen • Performance • Messungen bei Performance-Problemen • Manuell • JVisualVM • Memory-Probleme • JVisualVM • MAT • IBM Heap Dump Analyzer Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse 12
  • 13. Ursachenforschung… • Tatsächlich alles richtig gemessen… (?) • Ergebnis: es gibt tatsächlich ein Performance- Problem • Was ist die Ursache? Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse 13
  • 14. Wo geht die Zeit verloren? • Es kann viele Ursachen geben • „Schlechter Code“ • Blick in diverse Antipattern Blogs / Artikel / Bücher • Klassiker • String, StringBuffer • compareTo() • resultSet.close() • XML-Parser • JNDI Lookups • JDBC Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse 14
  • 15. Manuell Messen • Auswertung von Logfiles • Zeiten zwischen Logausgaben • Gezielte Logausgaben mit Zeitangaben • AOP / Interceptoren • Aufwändige Analyse, schwer Daten zu aggregieren @|03.09.2010 16:59:15.899|[[ACTIVE] ExecuteThread: '6' for queue: 'weblogic.kernel.Default (self- tuning)']|DEBUG|CorrID[9d4e92197bc54b6f]|de.adesso.hgu.hcex.busines s.interceptor.ProfilingInterceptor|profile|46|Methode 'public long de.adesso.hgu.hcex.facade.SimpleBean.validate(de.adesso.hgu.hcex.ut il.MDCWrapper,java.lang.String) throws de.adesso.hgu.hcex.business.exception.ValidationException' ausgefuehrt in 76ms Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse 15
  • 16. Eine Datenbank mit I/O-Problemen Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse 16
  • 17. Agenda • Über das Messen • Performance • Messungen bei Performance-Problemen • Manuell • JVisualVM • Memory-Probleme • JVisualVM • MAT • IBM Heap Dump Analyzer Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse 17
  • 18. JVisualVM • Es gibt viele Tools, z.B. JProbe u.a. • JVM TI ist neue Schnittstelle innerhalb der JVM • Geschenkt: JVisiualVM • Teil der SUN JDK und unter https://visualvm.dev.java.net/ • Features • Konfiguration der Applikations-Runtime • Performance Monitor • Memory Monitor • Thread Monitor • Offline Analyse Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse 18
  • 19. JVisualVM – Verbinden • Lokale, laufende JVM‘s unter dem gleichen User werden automatisch gefunden • Remote-JVM‘s • Starten von jstatd auf dem Remote-System. Muss unter dem gleichen User wie die JVM laufen • Starten der Applikation mit den Systemparametern • com.sun.management.jmxremote.port • com.sun.management.jmxremote.ssl • com.sun.management.jmxremote.authenticate Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse 19
  • 20. Monitoren der Basisdaten Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse 20
  • 21. Tomcat unter Last Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse 21
  • 22. Threads Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse 22
  • 23. Sampler Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse 23
  • 24. Tomcat… • Simple Methode um CPU und Speicher zu verbrauchen: public static String generateLongString() { String result = new String(); for (int i = 0; i < 10000; i++) { result = result + "dummy" + i + "<br>"; } return result; } Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse 24
  • 25. Sampler-Ergebnis Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse 25
  • 26. Agenda • Über das Messen • Performance • Messungen bei Performance-Problemen • Manuell • JVisualVM • Memory-Probleme • JVisualVM • MAT • IBM Heap Dump Analyzer Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse 26
  • 27. Memory Probleme • Häufig treten Memory und Performance-Probleme gemeinsam auf • Memory-Probleme werden in der Entwicklung noch häufiger ignoriert als Performance-Probleme • Testumgebungen laufen nicht lang genug • zu wenig Testdaten • Analyse in einer produktiven Umgebung schwierig • Häufig beobachtete Dauer-Zwischenlösung • Application Server Reboots (täglich, stündlich…) Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse 27
  • 28. Heap Dumps • Wichtiges Werkezeug um aktuelle Speichersitaution einzufangen und zu analysieren • Heap Dumps erzeugen mit… • -XX:-HeapDumpOnOutOfMemoryError und dazugehörige Optionen • erzeugt Heap Dumps bei einer OOME • Jmap , JConsole, JVisualVM – Teile der SUN JDK • Über JMX • Tastenkombinationen Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse 28
  • 29. GC und Performance • GC kostet CPU-Zeit • Sichtbar: „die Welt steht“ („Stop the World“) • Es gibt verschiedene GC‘s • leider immer noch eine Erwähnung wert! • Default-Einstellungen abhängig von System, CPU & Speicher • Abhängig vom Einsatzszenario • Durchsatzoptimiert = „Stop the World“ • Ziel: Minimierte Pausen • kostet aber Durchsatz! • auch in G1 (wenn auch kurz) Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse 29
  • 30. Agenda • Über das Messen • Performance • Messungen bei Performance-Problemen • Manuell • JVisualVM • Memory-Probleme • JVisualVM • MAT • IBM Heap Dump Analyzer Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse 30
  • 31. Sampler… String in Session Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse 31
  • 32. GC in JVisualVM Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse 32
  • 33. Agenda • Über das Messen • Performance • Messungen bei Performance-Problemen • Manuell • JVisualVM • Memory-Probleme • JVisualVM • MAT • IBM Heap Dump Analyzer Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse 33
  • 34. Eclipse Memory Analyzer (MAT) • Standalone (RCP) und als Plugin • Bei großen Heap Dumps RCP mit hohen Memory- Settings verwenden, sonst schnell OOME ! • Kann Heap Dumps von SUN & IBM JDK‘s auswerten • Ähnlich JVisualVM anfordern von Heap Dumps • Unterstützt OQL (Object Query Language) Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse 34
  • 35. MAT – Overview Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse 35
  • 36. MAT • Leak Suspects Report • Analysiert Heap Dump nach möglichen Memory Leaks • Top Components • Alle Komponenten die > 1% des Heaps belegen • Component Report • Identifiziert z.B. vervielfachte Strings, leere Collections usw. • Histogramm / Dominator Tree • Speicherverbrauch herunter gebrochen auf einzelne Instanzen Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse 36
  • 37. MAT – Domintor Tree Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse 37
  • 38. MAT – OQL • Mit Hilfe von OQL ist gezielte Suche nach Speicherverbrauch von bestimmten Objekten möglich • Syntax sehr einfach… analog SQL Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse 38
  • 39. MAT – Viele Funktionen • MAT bietet sehr viel Funktionalität • Suche nach GC Roots • Referenz-Zusammenfassungen • Ggfs. wichtige Hinweise warum ein Objekt nicht weggeräumt wird! • Für schnelle Analysen sind die Reports geeignet • Tiefergehende Analysen benötigen einiges an Einarbeitung Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse 39
  • 40. Agenda • Über das Messen • Performance • Messungen bei Performance-Problemen • Manuell • JVisualVM • Memory-Probleme • JVisualVM • MAT • IBM Heap Dump Analyzer Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse 40
  • 41. IBM Heap Dump Anaylzer • “IBM Thread and Monitor Dump Analyzer for Java” • http://www.alphaworks.ibm.com/tech/jca • Mein “Favorit“ für schnelle Analysen • Unterstützt (inzwischen) SUN & IBM JDK Heap Dumps im hprof-Format • Bietet suche nach Leaks • Übersichtlich, aber nicht so detailverliebt wie MAT = Pragmatisch Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse 41
  • 42. IBM HDA Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse 42
  • 43. Weitere Tools (teilweise veraltet) • IBM Diagnostic Tool for Java Garbage Collector • Für IBM JDK • http://www.alphaworks.ibm.com/tech/gcdiag • jhat – Heap Dump Browser, Teil der SUN JDK • Jconsole – Teil der SUN JDK • Funktionalität durch JVisualVM abgedeckt • HPROF • http://java.sun.com/developer/technicalArticles/Programmin g/HPROF.html • Sehr rudimentäres Profiling-Tool, Analyse mit perfanal • Option -Xrunhprof Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse 43
  • 44. Vielen Dank! Dr. Halil-Cem Gürsoy adesso AG halil-cem.guersoy [at] adesso.de & @hgutwit
  • 45. adesso AG • Sponsor Herbstcampus 2010 • Mitarbeiter • Über 750 Mitarbeiter in der adesso Group • Umsatz • Umsatzerwartung 2010: > 79 Mio. Euro • Auszeichnungen • Platz 18 der deutschen Top-25 Beratungs- und Systemintegrationsunternehmen (Lünendonk-Liste 2010) • Top Job (2008) • Deutschlands beste Arbeitgeber (2005 und 2010) • Standorte in Dortmund, Köln, Aachen, Stuttgart, Hamburg, Berlin, Frankfurt, München sowie in der Schweiz und Österreich Herbstcampus 2010 – Mist gemessen? – Java Performance und Memory Analyse 45