Java EE 5 Performance

Ähnliche Dokumente
Softwareentwicklung mit Enterprise JAVA Beans

Entwicklung von Web-Anwendungen auf JAVA EE Basis

Performance Antipatterns JUGS Performance Abend

MOBILE ON POWER MACHEN SIE IHRE ANWENDUNGEN MOBIL?!

Erfahrungen und Erkenntnisse. Klaus Richarz, HBT GmbH

Projektgruppe. Thomas Kühne. Komponentenbasiertes Software Engineering mit OSGi

Spring Dynamic Modules for OSGi Service Platforms

Next generation open source BPM JBoss jbpm 4. Java Forum Stuttgart

Java EE Projektseminar

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

ORACLE Business Components for Java (BC4J) Marco Grawunder

Architekturen. Von der DB basierten zur Multi-Tier Anwendung. DB/CRM (C) J.M.Joller

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

Web Services. XML, WSDL, SOAP und UDDI Einblicke und Ausblicke J.M.Joller 1

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, Java Forum Stuttgart 2007

Spring Dynamic Modules for OSGi Service Platforms

Automatisiertes Testen von Java EE-Applikationen mit Arquillian

JBoss Seam. Ein JEE 5 Webframework. Jörg Wüthrich Infopoint, 4. Februar 2009

Webinar: Einführung in ICEfaces

Open Source als de-facto Standard bei Swisscom Cloud Services

Programmierung von Client/Server- Anwendungen

Web 2.0 Architekturen und Frameworks

jbpm5 in Java EE 6 Marek Iwaszkiewicz Pascal Schaerf akquinet AG

Björn Heinemann Leiter Entwicklung Energiewirtschaft

Performance Analyses with inspectit

Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java

Fujitsu BeanConnect TM V3.0 Software 0 FUJITSU LIMITED 2013

SAP NetWeaver Gateway. 2013

Zend PHP Cloud Application Platform

ATHOS Benutzertreffen

Database Exchange Manager. Infinqa IT Solutions GmbH, Berlin Stralauer Allee Berlin Tel.:+49(0) Fax.:+49(0)

EPO Consulting GmbH. Ihr Partner für HTML5 und SAP UI5 Apps. Stand 2015/04. EPO Consulting GmbH - 1 -

Performance Tuning

Java 2, Enterprise Edition Einführung und Überblick

Überblick Produkte. ORACLE AS 10g R3 JAVA Programming. (5 Tage)

Einsatz von Applikationsservern. Untersucht am Beispiel des Sybase Enterprise Application Server

SAP SharePoint Integration. e1 Business Solutions GmbH

Herzlich Willkommen! eine praxisnahe Übersicht. Mit Java ins Web - mb@bebox.franken.de (c) Michael Behrendt -

WEBAPPLIKATIONEN MIT PHP. Wo gibt es Hilfe? Wie fang ich an?

Viele gute Stellen sind frei. Besetzen Sie eine.

SE2-10-Entwurfsmuster-2 15

Stabilisierung von J2EE-Anwendungen durch APM

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Organisation und Systeme SOA: Erstellung von Templates für WebService Consumer und Provider in Java

Copyright 2014, Oracle and/or its affiliates. All rights reserved.

Liste V Enterprise JavaBeans

arlanis Software AG SOA Architektonische und technische Grundlagen Andreas Holubek

PL/SQL Web-Services mit Oracle 11g

MOC Entwicklung von ASP.NET MVC 4 Webapplikationen

Informationswirtschaft II Rational Unified Process (RUP)

Informationswirtschaft II

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

Internetanbindung von Datenbanken

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

Design Pattern - Strukturmuster. CAS SWE - OOAD Marco Hunziker Klaus Imfeld Frédéric Bächler Marcel Lüthi

Java Enterprise Architekturen Willkommen in der Realität

WebSphere Application Server Installation

E-Business Architekturen

Online Banking System

Mobiles SAP für Entscheider. Permanente Verfügbarkeit der aktuellen Unternehmenskennzahlen durch den mobilen Zugriff auf SAP ERP.

OWASP Stammtisch München Sep 2014 XSS und andere Sicherheitslücken aus der Perspektive des Programmcodes

JDO Java Data Objects

Übungsaufgabe Transaktion als Middleware

Komponentenorientierte Software-Entwicklung. Seite 1 / 42

Struts 2 Das Imperium schlägt zurück?

JSP und Servlet Programmierung

5. Programmierschnittstellen für XML

JEAF Cloud Plattform Der Workspace aus der Cloud

Ora Education GmbH. Lehrgang: Oracle Application Server 10g R3: Administration

OSGi: Anwendungsszenarien, Auswahlkriterien und Ausblick

PRODATIS CONSULTING AG. Folie 1

Jakarta Turbine Ein Open Source Framework fÿr Webanwendungen. KNF Kongre 2001 Henning P. Schmiedehausen

Sof o t f waretechn h o n l o og o i g en n f ü f r ü v e v rteilte S yst s eme Übung

AS/point, Ihr Partner die nächsten 10 und mehr Jahre -

INDIVIDUELLE SOFTWARELÖSUNGEN CUSTOMSOFT CS GMBH

Hibernate Das Praxisbuch für Entwickler

Programmierung von Java- Webanwendungen. paluno

Enterprise JavaBeans Überblick

JBoss 7 als Plattform für hochverfügbare Anwendungen

Analyse und praktischer Vergleich von neuen Access- Layer-Technologien in modernen Webanwendungen unter Java. Oliver Kalz

Softwareentwicklung mit JAVA EE

EXCHANGE Neuerungen und Praxis

Web-basierte Benutzerschnittstellen für Embedded Systeme: Eine Benutzerschnittstelle drei Sichtweisen

Tomcat Konfiguration und Administration

Herausforderungen des Enterprise Endpoint Managements

Grid-Systeme. Betrachtung verschiedener Softwareplattformen zur Realisierung von Grids und Vorstellung des Globus Toolkit Grid Systeme 1


Business Process Management und Workflow-Technologien: Grundlagen, Produkte, Forschung Seminar

Installation von NetBeans inkl. Glassfish Anwendungs-Server

Application Frameworks

5. Programmierschnittstellen für XML

Festpreisprojekte in Time und in Budget

Grundlagen Software Engineering

Cloud Computing. Betriebssicherheit von Cloud Umgebungen C O N N E C T I N G B U S I N E S S & T E C H N O L O G Y

business.people.technology.

Java Web Services Metadata JSR-181

Von ODBC zu OLE DB. Neue Möglichkeiten der Datenintegration. Harald Gladytz, Team Vertrieb ESRI Niederlassung Leipzig

CORBA. Systemprogrammierung WS

Gemeinsam mehr erreichen.

Transkript:

Java EE 5 Performance DRV Jahrestagung Java Würzburg 25.2.2008 Mirko Novakovic, codecentric GmbH

Agenda 1. Java EE 5 Überblick 2. Performance und Java EE EJB und Persistence Web Services und Remoting Web Tier 3. Java EE Performance Best Practices Architektur und Design Prozesse Monitoring und Diagnose Tools (Demo) 4. Fragen und Antworten 2

Portfolio performance Technische Qualitätssicherung mit den Schwerpunkten Performance und Verfügbarkeit. Analyse und Optimierung von Java Performance und Memory Problemen. Performance Engineering aus der Praxis und mit jahrelanger Erfahrung. architecture Beratung und Entwurf von Software Architekturen mit Schwerpunkt Web- und Serviceorientierten Architekturen. Durchführung von Architekturreviews für die Risikoanalyse in Projekten und zur Ermittlung von Optimierungspotentialen. open technology Beratung im Bereich Open Source Technologien und Frameworks. Entwicklung von Portal, Content Management und SOA Projekten im Java Enterprise Umfeld. Workshops und Schulungen zum Zwecke eines Knowhow Transfers an unsere Kunden. Zertifizierte Experten für JBoss Technologien und das Springframework. 3

performance Last- und Performancetest Performance Analyse Performance Tuning Performance Tools Green IT Praxiserorbtes Vorgehensmodell itko Lisa, HP/Mercury Loadrunner, JMeter Management des gesamten Performance Engineering Lifecycles Partner von Quest, dynatrace und CA/Wily Publikationen, Vorträge und Schulungen Verhindern von Fingerpointing Schulungen und Mentoring Zertifizierte Experten Erfahrung aus vielen Troubleshooting Einsätzen Schnell und zuverlässig mit Erfolgsgarantie Java Performance Tuning Workshop Partner der führenden Hersteller Schnelle und zielführende PoCs Erfahrene und zertifizierte Berater Wissenstransfer und Schulungen Analyse der Infrastruktur und Software Ermittlung von Optimierungspotential Reduktion der Hardware und Software Kosten Bessere Performance und Skalierbarkeit 4

1. JAVA EE ÜBERBLICK 5

Java EE Überblick - APIs 6

Java EE Überblick Interessante Neuerungen EJB3 POJO basierter Ansatz mit Dependecy Injection Java 5 Annotation Support Java Persistence API (JPA) mit portablem Entity Manager JavaServer Faces Web User Interface Framework GUI Komponenten Page Navigation, Validation, etc. Erweiterter WebService Support Viele Vereinfachungen in der Entwicklung von POJO basierten WebServices 7

Java EE Multitier Applikationen - Schichten 8

Java EE Multitier Applikationen - Kommunikation 9

Java EE Multitier Applikationen Operationale Sicht Web Tier Java EE Applikation Java EE Applikationsserver Java SE Virtual Maschine Betriebssystem Application Tier Java EE Applikation Java EE Applikationsserver Java SE Virtual Maschine Betriebssystem Java EE Applikation Java EE Applikationsserver Java SE Virtual Maschine Betriebssystem SOAP, HTTP, JRMP, IIOP Java EE Applikation Java EE Applikationsserver Java SE Virtual Maschine Betriebssystem 10

Java EE und SOA Java ist die führende Plattform für SOA Anwendungen Oracle/BEA IBM WebSphere Open Source (JBoss, Glassfish, Mule) Erweiterungen von Java EE um weitere Standard -Komponenten Portal Server Business Process Server Business Rules Management Systeme Enterprise Service Bus Service Registries und Governance Software 11

Java EE und weitere Standards Service Componente Architecture (SCA) www.osoa.org Modell für die Erstellung von SOA Anwendungen Implementierungen in vielen Standards möglich (Spring, POJO, EJB, WS, COBOL, C, C++, ) IBM, BEA, Oracle, SAP, IONA, Sun, Software AG, Service Data Objects (SDO) Vereinfachung des Datenzugriffs und der Datenverwaltung in Applikationen OSGI Serviceorientierter, komponentenbasierter Ansatz Dynamisches Laden und Deployment von Modulen inkl. Versionen Hohe Entkoppelung der Module Springframework defacto Standard Alternative zu Java EE 12

2. PERFORMANCE UND JAVA EE 13

Java EE Performance Probleme Performance Probleme im Java EE Bereich sind häufig Resultat einer sehr hohen Komplexität der Architektur und der eingesetzten Software Komponenten und Frameworks viele logischer und physikalischer Schichten Die häufigsten Java EE Performance Probleme sind (Top 5) 1. Memory Leaks und GC Overhead 2. O/R Mapping und DB Zugriff 3. Remoting und Verteilung 4. Ineffiziente GUI/Web Entwicklung 5. Unnötiger/Falscher Einsatz von Software Komponenten 14

Java EE Performance O/R Mapping und DB Zugriff Java Persistence API Entstanden aus JSR-220 (EJB 3.0) POJO basiertes O/R Mapping Framework als Ersatz für EJB 2.x CMP Entity Beans Viele Ähnlichkeiten mit Hibernate Einfaches Annotation basierte Entwicklung @Entity public class Flight implements Serializable { Long id; @Id public Long getid() { return id; } } public void setid(long id) { this.id = id; } 15

JPA Performance Funktionsweise verstehen Fetch Strategien Häufiges Problem ist, dass die Funktionsweise von JPA Implementierungen nicht zu 100% verstanden wird Frage: Wie viele und welche SQL Statements werden erzeugt? Fetch Strategien verstehen fetch=eager alle Assoziationen werden mit der Entität geladen. fetch=lazy - die Assoziationen werden erst beim Zugriff geladen Erweiterte Fetch Strategien am Beispiel Hibernate Definition ob Eager-Fetch mit JOIN oder einzelnen SELECT Statements erfolgen soll BatchFetch (@BatchSize=x) es werden mehrere Entitäten des selben Typs geladen 16

JPA Performance Funktionsweise verstehen - Cascading Cascade verstehen Das CASCADE Attribute legt fest, welche Operationen auf Referenzierte Objekte mit ausgeführt werden CASCADE=ALL bedeutet, dass alle Operationen auf die Sub-Entitäten mit ausgeführt werden. Cascading kann auf bestimmte Operationen eingeschränkt werden beispielsweise: CASCADE=PERSIST Erweiterte Fetch Strategien am Beispiel Hibernate CASCADE=DELETE_ORPHAN Legt fest, dass nur die DELETE Operationen nur an gelöschte Referenzen weitergeleitet werden 17

JPA Performance Caching Caching ist in vielen Fällen eine sehr effektive Form die Performance zu verbessern. Je read -lastiger eine Entität ist, desto höher ist der Performance Gewinn. Gerade bei Schlüsselwerten (z.b. Länderliste) kann der Cache die Anzahl SQL Statement deutlich reduzieren Caching ist nicht Teil der JPA Spezifikation und daher von Anbieter zu Anbieter unterschiedlich 18

JPA Performance Hibernate Caching First Level Cache (Persistence Context) Cache der Entitäten innerhalb einer Transaktion Second Level Cache Cache der Entitäten Context übergreifend Unterschiedliche Implementierungen: EHCache, JBoss Cache, Oracle Coherence Cache auf Basis des Primärschlüssels Clustering des Cache möglich Overhead durch Replikation beachten Query Cache Caching von Query Ergebnissen Nur IDs werden gecached und dann über Second Level Cache geladen Applikation Hibernate-Session First-Level-Cache Second-Level-Cache JDBC Datenbank 19

JPA Performance JDBC Tuning DB Spezifische Funktionen nutzen Der Datenbankhersteller wird nur sehr selten gewechselt Trade-Off zwischen Portierbarkeit und Performance JDBC Treiber Parameter optimieren z.b. Prepared Statement Cache Optimierung der Abfragen, Indizes und Tabellen Analyse der Datenbank EXPLAIN verwenden DBA frühzeitig mit einbeziehen Isolation Level richtig verwenden 20

Remoting Performance - Probleme Probleme treten in der Entwicklung nicht auf Bandbreiteneinschränkung und Latenzzeit am Produktivsystem Verteilung von EJBs auf mehrere Container Hohe Anzahl Remote Aufrufe Missachtung von Datenlokalitätsregeln Synchronisation am Server Einsatz ungeeigneter Remoting Technologie 21

Remoting Performance Protokolle Es existieren unterschiedliche Architekturen und Protokolle für den Remote Zugriff aus Komponenten und Services Remote Methode Invocation (RMI) JRMP Java proprietäres Protokoll IIOP GIOP Protokoll T3, ORMI Vendor spezifische Protokolle (BEA/Oracle) WebServices SOAP Hessian Spring HttpInvoker ReST HTTP Messaging JMS Tibco Rendevouz 22

Remoting Performance Ein Performance Vergleich RMI/JRMP Objekte werden direkt auf den TCP/IP Socket serialisiert Kaum Speicherverbrauch Beste Performance RMI/IIOP Objekte werden zuerst im Speicher serialisiert Signifikante Speicheranforderungen 10-50% langsamer als RMI/JRMP HTTP/SOAP Objekte werden zuerst im Speicher serialisiert und in das SOAP Protokoll gebracht String-Darstellung stellt signifikante CPU und Speicheranforderungen 2-10x langsamer als RMI/JRMP 23

Remoting Performance Architektur Verteilung von Anwendungen sollte immer Anforderungsgetrieben erfolgen Skalierbarkeit Ausfallsicherheit Vermeidung von Interferenzen Innerhalb gleicher Technologien und eines Unternehmens sollte das Protokoll richtig gewählt werden SOA!= SOAP Besser RMI/JRMP wählen z.b. mit EJB3 Session Beans Bei EJB3 Session Beans kann zunächst mit lokalen Zugriffen gearbeitet und später einfach auf einen Remote Zugriff gewechselt werden 24

Remoting Performance Multilayering Antipattern Client ViewObject View ValueObjects Business Facades Field-Mapping Business Objects TransferObjects Backend/DB Problematik Zeitverlust beim Mapping und Konvertieren von Daten Cycling Object Problematik und hohe GC Belastung Lösung Angemessene Anzahl Schichten verwenden Neue Framework Ansätze wie JBoss Seam nutzen 25

Remoting Performance JBoss Seam Ein Java EE 5 Framework Mehr als ein MVC Framework. Füllt die Lücke zwischen JSF und EJB3 im Java EE 5 Standard Annotation basiertes Dependency Injection Framework Eingebauter Support für AJAX (RichFaces) Integration vieler Standards und Frameworks EJB3/Hibernate jbpm JBoss Rules JSF/Facelets/RichFaces Groovy Support Caching (JBoss Cache) itext, WebServices, Email, Security 26

Web Tier Performance Web Frontend Performance Einfluss von HTML GUIs wird unterschätzt Latenzzeiten und Bandbreitenengpässe WLAN, GPRS, UMTS Große Anzahl Server Roundtrips AJAX Neuladen kompletter HTML Seiten Große Seiten und Datenmengen Bilder, CSS, Javascript, 27

Web Tier Performance Beispiel: Ladezeit von www.yahoo.com 28

Web Tier Performance HTML Tuning Anzahl der Requests reduzieren Nur wenige Dateien verwenden, d.h. CSS und Javascript Dateien kombinieren und Image-Maps verwenden Expires-Header verwenden, um HTTP 304 Anfragen zu vermeiden HTML Größe reduzieren Content kann ab HTTP 1.1 gezipped werden Javascript und CSS in externe Dateien Fachliche Aufteilung der Masken Nur Felder anzeigen, die in 80% der Fälle benötigt werden Listeninhalte bewerten (z.b. Länderlisten) AJAX verwenden, um kompletten Seiten-Reload zu vermeiden Statischen Content über Webserver ausliefern 29

Web Tier Performance Servlets und JSPs HTTP Session Größe und Zugriff Session ist kein Cache Datenmenge stark begrenzen ansonsten nur eingeschränkte Skalierbarkeit Bei Session Replikation ist der Zugriff und die Größe der Session elementar für die Performance Session Timeout richtig setzen und explizit invalidieren JSP Tuning Elemente cachen (z.b. OSCache) Percompiling verwenden Kapselung von Funktionen in Custom Tags für zentrales Tuning der Anwendung Content Management System verwenden gute Caching und statische Export Funktionen vorhanden 30

3. JAVA EE PERFORMANCE BEST PRACTICES 31

Best Practices Architektur und Design Performance/Memory als Architektur- und Designtreiber Hohe Priorität, langsame oder instabile Anwendungen habe keine Akzeptanz Fokus auf diese Treiber in einer frühen Phase Definition von messbaren Zielen wichtig Die Applikation sollte korrekt funktionieren, bevor sie getuned wird Bugfixing/Weiterentwicklung und Tuning stören sich gegenseitig Konzentration auf Tuning, nicht auf Bugfixing Inkrementelle Vorgehensweise in kurzen Intervallen mit ständigem Tunen trotzdem möglich Sauberes Design und intensive Verwendung von Schnittstellen vereinfacht das Tuning Kapselung Methoden/Algorithmen/Zugriffe hinter definierten Schnittstellen Macht die Implementierungen austauschbar, wenn diese Probleme verursachen 32

Best Practices Performance Engineering Performance während des gesamten Lebenszyklus einer Software betrachten (Continuous Performance Management) Entwicklung Use Cases und Szenarien wählen (Performance Risiko) Performance Modelle erstellen (Software und System Execution Models) Modelle Evaluieren und Testen (Lasttest und Diagnose) Tuning Produktion Monitoring Capacity Planning 33

Best Practices Tools Schuss ins Dunkle vermeiden JVM Performance Tools verwenden GC Analyse Heap Dumps JMX Daten (jconsole) Thread Analyse Kommerzielle Lösungen Profiler (JProbe, PerformaSure, JProfiler, YouKit, dynatrace Diagnostics) Monitoring (Foglight, dynatrace Diagnostics, Introscope, ITCAM, i³) Open Source Profiler (Eclipse Profiler, JAMon, Netbean Profiler) Monitoring (Hyperic, Nagios) 34

Best Practices In Wissen investieren Profiler und Diagnose Werkzeuge werden häufig nicht genutzt Prozesse sind nicht bekannt oder häufig zu theoretisch Tiefgreifendes Verständnis der Technologien fehlt JVM Java SE & EE Frameworks Software Komponten Investieren Sie in Training und Workshops 35

Kontakt codecentric GmbH Mirko Novakovic Grünewalder Str. 29-31 42657 Solingen phone +49-212-2494315 mobil +49-163-6681500 email novakovic@codecentric.de