Java Performance Tuning



Ähnliche Dokumente
IBM DB2 für Linux/Unix/Windows Monitoring und Tuning

WebSphere Application Server Installation

MySQL Administration. Seminarunterlage. Version 3.02 vom

Big Data Informationen neu gelebt

Linux Cluster mit Pacemaker und Heartbeat 3

Tomcat Konfiguration und Administration

Apache HTTP Server Administration

JSP und Servlet Programmierung

PHP Programmierung. Seminarunterlage. Version 1.02 vom

IBM Informix Dynamic Server Hochverfügbarkeits-Technologien unter Unix

Oracle Backup und Recovery

Oracle Cloud Control. Seminarunterlage. Version vom

Linux Hochverfügbarkeits-Cluster

IT-Projektcontrolling

Java Garbage Collector: Funktionsweise und Optimierung. Mathias Dolag Prof. Dr. Peter Mandl (DOAG 2012, )

Oracle AWR und ASH Analyse und Interpretation

G1 reif für den großen Auftritt?

IBM Informix Tuning und Monitoring

Oracle Backup und Recovery mit RMAN

Welche GC-Strategie ist die richtige?

Objektorientierung in Oracle

IBM Informix SQL. Seminarunterlage. Version vom

Eins für alles? Monitoring und Profiling mit VisualVM

Administration und Konfiguration für JBOSS

Oracle Capacity Planning

Oracle Cloud Control. Seminarunterlage. Version vom

Übung 8: Semaphore in Java (eigene Implementierung)

Apache HTTP Server Administration

Citrix Receiver Server-Umstieg

Oracle Weblogic Administration Grundlagen

Einführung in den NetBeans Profiler

Java Virtual Machine (JVM) Bytecode

PHP Programmierung. Seminarunterlage. Version 1.07 vom

Solaris Virtualisierung mit ZFS und Container (Zonen)

Metriken und optimale Einsatzszenarien für Garbage Collectoren der Java HotSpot Virtual Machine

Systemvoraussetzungen

Java-Optimierung Grundlagen, Konfiguration, Methoden und Werkzeuge zur Optimierung von Oracle-Java

Systemvoraussetzungen

Herzlich willkommen DevDay 2016 Performance Profiling mit JProfiler

Oracle Datenbankprogrammierung mit PL/SQL Grundlagen

Einführung in die objektorientierte Programmierung

P-touch Transfer Manager verwenden

Unix/Linux Grundlagen für Einsteiger

IBM AIX Installation, Backup und Recovery mit NIM

Oracle GridControl Tuning Pack. best Open Systems Day April Unterföhring. Marco Kühn best Systeme GmbH

Word-Vorlagen-System mit Outlookanbindung

Perl Programmierung Grundlagen

Rechnung WAWI01 zu WAWI Version 3.8.6x01

IBM DB2 UNIX/Linux/Windows Backup und Hochverfügbarkeit mit HADR

Sybase Central Dokumentation Aktivierung der Monitoringfunktion

Citrix Receiver Installation

Klappe auf! Was macht die JVM denn da?

Anleitung für Mobildruck und -scan aus Brother iprint&scan (Windows Phone )

Oracle Datenbankadministration Grundlagen

Java für Embedded Systems

Kurzeinführung Excel2App. Version 1.0.0

Um zu prüfen welche Version auf dem betroffenen Client enthalten ist, gehen Sie bitte wie folgt vor:

Enterprise Control Center. Systemvoraussetzungen V2.1

Dokumentation QuickHMI Runtime Manager

Application Performance Management. Auch eine Frage des Netzwerkes?

Installation der kostenlosen Testversion

MSXFORUM - Exchange Server 2003 > Konfiguration Sender ID (Absendererkennu...

OPOS mit Coder Light OPOS. Installation Kurzanleitung

Module für eine Java-Administrationsschulung

Data Warehouse Grundlagen

Java GUI Entwicklung mit Swing

Installationsanleitung Laurus Projekte System (Aufgaben / Projekte mit Gantt Chart)

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

Perceptive Document Composition

Kurzanleitung WebSphere MQ Funktionen

Cockpit 3.4 Update Manager

conjectcm Systemvoraussetzungen

Trend Micro Lösungen im Storage Umfeld

Java Programmierung Grundlagen

Dokumentation QHMI Plug-In Manager

OSEK-OS. Oliver Botschkowski. PG AutoLab Seminarwochenende Oktober AutoLab

4D Server v12 64-bit Version BETA VERSION

C# im Vergleich zu Java

Installation Blockdruck WEB. Version 3.1.1

Avira Management Console Optimierung für großes Netzwerk. Kurzanleitung

Avira AntiVir Exchange. Installation von Avira AntiVir Exchange in einer Database Availability Group. Kurzanleitung

CADEMIA: Einrichtung Ihres Computers unter Linux mit Oracle-Java

ARCWAY Cockpit. Professional Upgrade. von 3.0 auf 3.1

Werkzeuge für Datenbank Handwerker: IBM Data Studio und IBM Optim QWT

1CONFIGURATION MANAGEMENT

Installationsanleitung

Installations Guide für YAJSW und DTLDAP

Mit ApEx 3.1 eine Website mit integriertem CMS entwickeln. Enrico Mischorr merlin.zwo InfoDesign GmbH & Co. KG

OERA OpenEdge Reference Architecture. Mike Fechner PUG Infotag 19. Mai 05 Frankfurt

Transit/TermStar NXT

White Paper. Konfiguration und Verwendung des Auditlogs Winter Release

Systemanforderungen TreesoftOffice.org Version 6.4

ecaros-update 8.2 Update 8.2 procar informatik AG 1 Stand: DP 02/2014 Eschenweg Weiterstadt

Übersicht. Nebenläufige Programmierung. Praxis und Semantik. Einleitung. Sequentielle und nebenläufige Programmierung. Warum ist. interessant?

Transkript:

Seminarunterlage Version: 5.04 Version 5.04 vom 16. Januar 2015

Dieses Dokument wird durch die veröffentlicht.. Alle Rechte vorbehalten. Alle Produkt- und Dienstleistungs-Bezeichnungen sind Warenzeichen oder eingetragene Warenzeichen der jeweiligen Firmen und beziehen sich auf Eintragungen in den USA oder USA-Warenzeichen. Weitere Logos und Produkt- oder Handelsnamen sind eingetragene Warenzeichen oder Warenzeichen der jeweiligen Unternehmen. Kein Teil dieser Dokumentation darf ohne vorherige schriftliche Genehmigung der weitergegeben oder benutzt werden. Die besitzt folgende Geschäftsstellen Adressen der Westernmauer 12-16 D-33098 Paderborn Tel.: (+49) 0 52 51 / 10 63-0 An der alten Ziegelei 5 D-48157 Münster Tel.: (+49) 02 51 / 9 24 35 00 Marlene-Dietrich-Str. 5 D-89231 Neu-Ulm Tel.: (+49) 07 31 / 9 85 88 550 Kreuzberger Ring 13 D-65205 Wiesbaden Tel.: (+49) 06 11 / 7 78 40 00 Wikingerstraße 18-20 D-51107 Köln Tel.: (+49) 02 21 / 8 70 61 0 Internet: http://www.ordix.de Email: training@ordix.de Seite 2 Version: 5.04

Inhaltsverzeichnis 1 Einleitung... 6 1.1 Agenda... 7 1.2 Performance Grundlagen... 8 1.2.1 Definition von Performance... 8 1.2.2 Performance Technologie und Messgrößen... 9 1.2.3 Messmethoden... 10 1.3 Strategien und Techniken... 12 1.3.1 Stufen... 12 1.3.2 Tuning Strategie und Techniken... 13 1.3.3 Tuning Procedure... 14 1.3.4 Performance View und Measurement... 15 1.3.5 Performance Tuning... 16 1.3.6 Performance Planning... 18 1.4 Java Virtual Machine... 19 1.4.1 Runtime Environment... 19 1.4.2 Speicherbedarf... 27 1.4.3 Class Loading... 29 1.4.4 Garbage Collection... 33 2 Monitoring- und Profiling- Tools... 34 2.1 Agenda... 35 2.2 Monitoring vs. Profiling... 36 2.3 Schichtenmodell der Performance-Analyse... 37 2.3.1 Schichtenmodell Betriebssystem... 38 2.3.1.1 Betriebssystem: Tools... 39 2.3.1.2 Task Manager... 40 2.3.1.3 Performance Monitor... 43 2.3.1.4 UNIX Monitoring... 44 2.3.1.5 Übersicht Betriebssystem-Tools... 46 2.3.2 Schichtenmodell JVM... 47 2.3.2.1 JVM: Tools... 48 2.3.2.2 Jps... 49 2.3.2.3 jstatd / jstat... 50 2.3.2.4 JConsole... 51 2.3.2.5 VisualVM Überblick... 52 2.3.2.6 VisualVM Features... 53 2.3.2.7 VisualVM Plugins... 54 2.3.2.8 VisualVM Monitor... 55 2.3.2.9 VisualVM Threads... 56 2.3.2.10 VisualVM Profiler... 57 2.3.2.11 VisualVM Visual GC... 58 2.3.2.12 GC-Profiling... 59 2.3.3 Schichtenmodell Java Anwendung... 60 2.3.3.1 Java Profiler... 61 3 JVM: Garbage Collection... 63 3.1 Agenda... 64 3.2 Einführung... 65 3.2.1 Altersverteilung von Objekten... 66 3.3 Speicherbereiche/Generationen... 67 3.3.1 Altersverteilung von Objekten... 67 3.3.2 Heap: Aufteilung in Generationen... 68 3.3.3 Speicherbereinigung nach Generationen... 69 3.3.4 Perm Space... 70 3.3.5 Aufteilung der Young Generation... 71 3.3.6 Die Old Generation... 72 3.4 GC Algorithmen... 73 Version: 5.04 Seite 3

3.4.1 Young Generation... 73 3.4.1.1 Mark and Copy... 73 3.4.1.2 Ausgabe des Heap vor und nach GC... 75 3.4.1.3 Mark and Copy... 76 3.4.1.4 Intergenerational References... 77 3.4.1.5 Parallelisierung der GC... 79 3.4.1.6 Parallele Speicherallokation... 80 3.4.2 Old Generation... 81 3.4.2.1 Mark and Compact... 81 3.4.2.2 Mark and Compact Kompaktierung... 82 3.4.2.3 Mark and Compact Phasen... 83 3.4.2.4 Mark and Compact Markierung... 84 3.4.2.5 Mark and Compact Berechnung neuer Speicherorte... 85 3.4.2.6 Mark and Compact Anpassung der neuen Referenzen... 86 3.4.2.7 Mark and Compact Verschiebung der Objekte... 87 3.4.2.8 Mark and Compact Fazit... 88 3.4.2.9 CMS Concurrent Mark and Sweep... 89 3.4.2.10 CMS Initial Marking... 90 3.4.2.11 CMS Concurrent Marking... 91 3.4.2.12 CMS Remarking... 92 3.4.2.13 CMS Concurrent Sweep... 93 3.4.2.14 CMS Preclean... 94 3.4.2.15 CMS Parallelisierung... 95 3.4.2.16 CMS Überblick... 96 3.4.2.17 CMS Fazit... 97 3.4.3 G1 Garbage-First Garbage Collector... 98 3.4.3.1 G1 Ziel... 100 3.4.3.2 Parallelität und Nebenläufigkeit... 101 3.4.3.3 G1 Aufbau des Heap... 102 3.4.3.4 G1 Garbage Collection... 105 3.4.3.5 G1 Glossar... 106 3.4.3.6 G1 Glossar (ff.)... 107 3.4.3.7 G1 Glossar (ff.)... 108 3.4.3.8 G1 Phasen der GC... 109 3.4.3.9 G1 1. RS maintenance... 110 3.4.3.10 G1 2. Concurrent Marking... 112 3.4.3.11 G1 2. Concurrent Marking Initial Marking... 114 3.4.3.12 G1 2. Concurrent Marking Remarking... 115 3.4.3.13 G1 2. Concurrent Marking Cleanup... 116 3.4.3.14 G1 3. Evacuation and Collection... 117 3.4.3.15 G1 Tuning... 119 3.4.3.16 G1 GC-Ausgaben... 121 3.5 Tuning der JVM... 127 3.5.1 Strategien und Ziele... 127 3.5.2 Durchsatz... 128 3.5.3 Pausenzeit... 129 3.5.4 Speicherverbrauch... 130 3.5.5 Auswahl des optimalen Garbage Collectors... 131 3.5.6 HotSpot VM Adaptive Tuning... 132 3.5.7 Konfiguration des Speichers: Gross heap tuning... 133 3.5.8 Konfiguration des Speichers: Fine heap tuning... 134 3.5.9 Weitere nützliche JVM-Parameter... 135 3.5.10 Garbage Collector JVM-Parameter... 138 3.6 Monitoring der Garbage Collection... 140 3.6.1 Überwachung der GC-Aktivitäten... 140 4 Tuning der Applikation... 144 4.1 Agenda... 145 4.2 Mehr Performance durch besseren Code... 146 4.2.1 System.arraycopy()... 147 Seite 4 Version: 5.04

4.2.2 Doppelte Initialisierung von Member-Variablen... 148 4.2.3 Iterator bei For-Each-Schleife... 149 4.2.4 StringBuffer und StringBuilder... 150 4.2.5 Datentypen... 151 4.2.6 Exception-Handling... 152 4.2.7 Collections in Java... 153 4.2.8 Maps in Java... 154 4.3 Micro Benchmarking... 155 4.4 Speicherverbrauch... 157 4.4.1 Object Reuse / Pooling... 157 4.4.2 Memory Leaks... 159 4.4.3 WeakReferences... 162 4.4.4 OutOfMemoryError-Analyse... 164 4.5 Multithreading... 165 4.5.1 Synchronization-Overhead... 167 4.5.2 Dead-Lock-Beispiel... 168 4.5.3 Dead-Lock Phänomene... 169 4.5.4 Dining Philosopher's Problem... 170 4.5.5 Dead-Locks finden... 171 5 Tuning von JEE-Applikationen... 176 5.1 Agenda... 177 5.2 JEE-Architekturen... 178 5.2.1 Skalierung HTTP-Skalierung... 179 5.2.2 Skalierung EJB-Skalierung... 180 5.3 Performance Faktoren... 181 5.3.1 Einfluss auf die Performance... 181 5.3.2 Application Server... 182 5.3.2.1 Netzwerk-Kommunikation Service Locator... 182 5.3.2.2 Service-Locator... 183 5.3.2.3 Service Locator Implementierung... 184 5.3.2.4 Netzwerk-Kommunikation Session Facade... 185 5.3.2.5 Session-Facade... 186 5.3.2.6 Seession Facade Implementierung... 187 5.3.2.7 Netzwerk-Kommunikation Web-Anwendungen... 188 5.3.3 Datenbank... 189 5.3.3.1 Netzwerk-Kommunikation JDBC-Optimierung... 189 5.3.3.2 JDBC-Optimierung Batch Updates... 190 5.4 Konkurrierende Prozesse... 191 5.4.1 Datenbank... 191 5.4.1.1 Parallele Verarbeitung auf der Datenbank... 191 5.4.2 Application Server... 198 5.4.2.1 Parallele Verarbeitung - Application Server... 198 Version: 5.04 Seite 5