SlideShare une entreprise Scribd logo
1  sur  65
Télécharger pour lire hors ligne
Social Collaboration 39: "Vernetzte Informationswelt"

XPages: Performance-Optimierung
Heinz Ulrich Krause
BCC Unternehmensberatung GmbH
http://www.bcc.biz

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

• Administrator /Developer seit 1993
• Senior Software Architect bei BCC

• OpenNTF Contributor
• IBM Champion 2011/2012/2013
• Blog http://www.eknori.de
• Notes Forum (http://www.atnotes.de)
www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

Agenda

•
•
•
•
•
•
•
•

Was kann die Performance beeinflussen ?
Java oder JavaScript ?
ViewNavigator oder GetNextDocument
Stringbuilder oder Concat (+)
JSF Lifecycle Listener
Partial Update / Partial Execute
Variable Resolver
Tools

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

Typischer XPages Request

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

Hardware

• Die Hardware hat einen nicht unerheblichen Einfluß
auf die Performance. Es gibt 3 Kernelemente
– CPU
– Arbeitsspeicher
– Festplatten

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

Hardware

• CPU
– Anzahl Kerne / Taktrate / Cache
–  Schlechte Antwortzeiten

• Arbeitsspeicher
– Obergrenze durch das Betriebssystem vorgegeben
–  Skalierbarkeit

• Schwache CPU und zu kleiner
Arbeitsspeicher führen zu
– Schlechter Gesamtperformance
– Schlechten Antwortzeiten
– Server “hängt”
www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

Netzwerk

• Bandbreite
– Geschwindigkeit, mit der Daten übertragen werden

• Latenz
– Beanspruchte Zeit einer Datenübertragung zwischen mehreren
Computer an einem Netzwerk

• Je größer die Bandbreite und
je kleiner die Latenz
desto "besser" ist die Verbindung
www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

Client & Browser

• Hardware
• Wie viele Daten (Requests / Responses) werden
übertragen
• Wie viele Daten werden übertragen (Größe)
• Wie werden Resourcen gecached
• Wie viel CSJS wird ausgeführt
• Größe / Komplexität des CSS
• Komplexität des Seitenaufbau

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

Performancebeeinträchtigungen

• Browser / HTTP Server
– Netzwerk: Latenz, Bandbreite, Dateigröße
– Browser: Anzahl gleichzeitiger Downloads (IE7 = 2 , IE8 = 6 )

• HTTP Server / App Server
– HTTP Server JVM Memory Allocation (heap size) & Garbage Collector
– CPU Time
– Anzahl Threads, DEFAULT: 40 , konfigurierbar in Domino Administrator

• App Server / Domino context
– Lesen von Designelementen (Xpage, .class files, jar files, etc)
– Je mehr Design Elemente, desto mehr Netzwerkanfragen
– Anzahl Backend API Calls, insbesondere bei großen Datenmengen
www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

Performancebeeinträchtigungen

• Servlet / JSF Lifecycle
– Persitence mode  Zugriffe auf das Dateisystem
– Serialisierung von Anfragen ( multiple partial update )
– Neuberechnung von Werten in allen Phasen des JSF Lifecycle

• Browser/ Client JavaScript/ Dojo
– Inline JavaScript verhindert die Ausführung von weiteren HTML
– AJAX requests an Dojo Module, die nicht geladen sind

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

Allgemeine Massnahmen zur Performancesteigerung

• notes.ini
– HTTPJVMMaxHeapSizeSet=1
– HTTPJVMMaxHeapSize=256M
• sollte auf ¼ des verfügbaren RAM gesetzt werden

• Domino Administrator
– HTTP server "Enable logging to" abschalten, wenn nicht benötigt
– HTTP server thread count – defaults to 40

• Debugging abschalten
– JavaEnableDebug=1
– JavaDebugOptions=transport=dt_socket,server=y,suspend=n,address=8000
– JavascriptEnableDebug=1 ( ab Version 9 )
www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

Nutzung des Arbeitsspeichers optimieren

• xsp.persistence.mode=
– Defines the persistence mode for the JSF pages
• file: Alle Seiten werden auf die Festplatte geschrieben
• fileex: Alle Seiten werden auf die Festplatte geschrieben; nur die aktuelle
Seite befindet sich im Arbeitsspeicher
• <else>: Alle Seiten werden im Arbeitsspeicher gehalten

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

XPages Design Optimierung

• „Simple Actions“ verwenden. Keine Buttons oder Links
mit umfangreichem JS
• Reduzierung der Berechnungen im Lifecycle
• partial update / partial refresh
• partial execute
• disableValidators & immediate event

• Reduzierung der Berechnungen zur dynamischen Anzeige
von Elementen ( rendered / loaded )
• Variable Resolver verwenden

• Repeat Control & Views
• viewEntry.getColumnValue statt viewEntry.getDocument.getColumn
• Domino View data source dataCache property wenn möglich
www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

“Laden” oder “Anzeigen”

• #
– Wird jedes Mal ausgeführt, wenn die Seite aufgebaut wird
• Wenn Werte sich ändern. (Computed values / Abhängigkeiten )

• $
– Wird nur beim ersten Seitenaufbau ausgeführt.
• Wenn sich Werte nicht ändern ( Label )

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

JavaScript/CSS Aggregation

• Faßt mehrere DOJO Module, CSS / JS files in einer
einzigen Datei zusammen
•
•
•
•

Weniger Anfragen vom Browser an den Server
Wirkt sich in Netzwerken mit hoher Latenz Performance steigernd aus
Performanteres Parsen von CSS / JS
Weniger Verbindungen zum Server
Aufd dem Server: xsp.properties:
xsp.resources.aggregate=true

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

JavaScript/CSS Aggregation

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

XPages PreLoad

• XPagesPreload=1
• Neues Feature in Notes / Domino 8.5.3
• Server und Client
• Java classes from the XPages runtime plug-ins
– loaded from a fixed list of runtime classes ( 435 in ND 8.5.3 )
– com.ibm.xsp.core, common utility, JS wrapper, FSF runtime classes

• Java classes referenced in *-faces.config.xml
– XPages control renderer, data sources, complex types

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

XPages PreLoad

• XPagesPreloadDB=Server!!Db.nsf/XPage.xsp, myDb.nsf
– Arbeitet auf Applikationsebene

– Die Anwendung wird beim Client/Serverstart in den Speicher geladen. Dies
passiert auch, wenn die Anwendung erstmalig im Browser geöffnet wird
– Für jeden Eintrag in der notes.ini Variable wird eine XPage URL generiert
und an den Server geschickt
– Die Anwendung wird geladen und das HTML generiert
– Die XPages Runtime verwirft das HTML, behält aber die Anwendung im
Speicher
www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

Scoped Variables

• applicationScope
– Für ALLE User einer Anwendung.
– Werden verworfen, wenn der letzte User die Anwendung geschlossen
hat.
– allgemeine Anwendungskonfiguration

• sessionScope
–
–
–
–

Für EINEN User während der Session dieses Users.
Wird nach einer bestimmten Zeit verworfen.
Kein Zugriff auf die Inhalte eines anderen Users
User bezogene Anwendungskonfiguration ( Sprache / Theme )

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

Scoped Variables (cont.)

• viewScope
– Nur auf der aktuell angezeigten Seite verfügbar
– Inhalt wird beim Wechsel zu einer anderen Seite verworfen
– Übertragung von Daten zwischen Elementen der Seite

• requestScope
– Verfügbar nur während einer einzelnen Aktion.
– Umfasst auch die Aktualisierung der Seite.

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

Application Scope aktualisieren

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

JSF Lifecycle

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

XPages Lifecycle Listener

• Was passiert in den einzelnen Phasen?

Ulrich Krause: http://openntf.org/XSnippets.nsf/snippet.xsp?id=a-simple-lifecyclelistenerwww.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

XPages Masterclass

http://www.openntf.org/internal/home.nsf/project.xsp?action=openDocument&name=XPages%20Masterclass
www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

DataContext

• Kann als globale Variable bezeichnet werden
• Kann dynamisch beim Laden einer Seite berechnet
werden
– Beispiel: ${javascript:@Today()}

• Kann an beliebige Elemente einer Seite gebunden werden
– XPage, Custom Control or Panel

• Kann über Expression Language referenziert werden
– At no point in the references do you run SSJS
– Not having to go through the SSJS parser
www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

DataContext – ACHTUNG !!!!

• Niemals dynamisch berechnen !!.
– Die Berechnung erfolgt mehrfach, auch bei einem partial refresh

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

DataContext – ACHTUNG !!!!

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

Partial Refresh / Update (Pro)

• Reduzierung der Berechnungen im renderResponse
– Weniger Rechenaufwand auf dem Server

• Kleinere Datenmengen, die vom Server übertragen
werden
– Reduzierung der Datenmenge im Netzwerk

• Bessere User / Browser experience
– Während der Aktualisierung bleibt die Seite weiterhin sichtbar
– Das Aktualisieren von nur kleinen Bereichen einer Webseite ist
schneller als der vollständige Neuaufbau
www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

Partial Refresh / Update (Cons)

• Abhängigkeiten ausserhalb der refreshID
– Bereiche, die eine Abhängigkeit zu dem neu berechneten Bereich
haben, werden nicht aktualisiert
– Vorsicht, wenn das partial Update für Bereiche aktiviert wird, die
bisher vollständig aktualisiert wurden

• Es kann nur eine refreshID angegeben werden
– Diesem Restriktion kann mit CSJS umgangen werden, allerdings werden
die einzelnen Aktualisierungen seriell abgearbeitet

www.dnug.de

http://www.timtripcony.com/blog.nsf/d6plinks/TTRY-84B6VP
Social Collaboration 39: "Vernetzte Informationswelt“

Partial Refresh / Update (Cons)

• Mehrere Aktualisierungen
– http://www.timtripcony.com/blog.nsf/d6plinks/TTRY-84B6VP

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

Partial Execution

• Reduziert den Rechenaufwand in den 3 “dataprocessing” Phasen
– Weniger Arbeit für den Server, bessere Antwortzeiten

• Abhängigkeiten ausserhalb der exec area
– Werte, die sich in Feldern ausserhalb der exec area liegen, werden
nicht berücksichtigt.
– Keine Aktualisierung dieser Werte und keine Aktualisierung von
Dokumenten
– Enabling Partial Exec where it was previously full execution may lead
to functional problems where values are out-of date in the onclick
script or in the redisplayed page.

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

Partial Execution (cont.)

• onclick Event Handler muss sich in der exec area
befinden
– The ApplyRequestValues phase prepares for the invokeApplication
phase.
– The onclick simple action or SSJS script won't occur if outside the
partial exec area

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

Partial Execution

• execMode neu ab 8.5.1
• Setzen der execId in V8.5.1 und V9

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

disableValidators / immediate

• disableValidators
–
–
–
–

JSF Lifecycle durchläuft alle Phasen (1-6)
Keine Validierung der Daten
Converters funktionieren weiterhin.
Werte in Dokumenten werden aktualisiert
• Sven Hasselbach – “Disable all validators at once”
(http://hasselba.ch/blog/?p=1106)

• Immediate
–
–
–
–

JSF Lifecycle durchläuft nur Phasen (1, 2, 6)
Keine Datenverarbeitung
Werte in Dokumenten werden nicht aktualisiert
Event Handler onclick scripts und renderResponse Berechnungen werden
ausgeführt

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

Minimize work in rendered/ visible computation

• Most properties, like CSS “style” are only computed
in the RenderResponse phase
• Edit Box and input “value” properties are used in
Data Processing phases and RenderResponse phase
• Data Source properties are computed during
RenderResponse
– Results are cached for the next request's Data Processing and
InvokeApplication phases

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

Minimize work in rendered / visible computation

• “Rendered” wird in allen Phasen des Lifecycle neu
berechnet.
• Nicht in jeder Eigenschaft neu berechnen
– @DbLookup, @DbColumn, getDocumentByKey
– Neuberechnung über viewScope steuern

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

Bilder

• Richtigen Bildtypen verwenden
– JPEG für komplexe und detaillierte Darstellungen
– PNG/GIF für Schaltflächen, Tranzparenz
• HTML <img> tag “width” und “height” Attribute verwenden

• Richtige Größe verwenden
– Keine Anpassung der Größe zur Laufzeit über HTML <img> tag “width”
und “height” Attribute
– Bilder, die grösser sind, als benötigt, benötigen mehr Bandbreite

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

Image Sprites

• CSS Image Sprites verwenden
– viele kleine Bilder in einem einzigen Image zusammenfassen
– CSS erstellen, um nur den benötigten Teil des Image Sprites
anzuzeigen
– Image Sprites unterstützen das “alt” Attribut nicht. Daher das “title”
Attribut verwenden bei barrierefreier Programmierung
– Online Tools zur Erstellung von Sprites
– http://spritegen.website-performance.org/

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

Image Sprites

http://www.w3schools.com/css/tryit.asp?filename=trycss_sprites_img
www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

Performance Messen: XPages Toolbox

• XPages Anwendung
– Funktioniert auf dem Server und dem Client
– NSF muss auf dem Server/ Notes Client installiert werden
– profiler.jar file in den JVM Start Parametern eintragen

• Misst CPU und Speicherauslastung
• OpenNTF.org Projekt
– Kostenlos und Open Source
– http://www.openntf.org/internal/home.nsf/project.xsp?action=openDo
cument&name=XPages%20Toolbox

• Backend Classes Profiling in 8.5.2 hinzugefügt
www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

Performance Messen: XPages Toolbox

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

Performance Messen: XPages Toolbox

• Erzeugen eines Heap Dump der JVM
– Über einen Button im XPages Profiler
– Über die Domino Console
• tell http xsp heapdump (triggers com.ibm.jvm.Dump.HeapDump())
• tell http xsp javadump (triggers com.ibm.jvm.Dump.JavaDump())

• Analysieren des Dumps mit Eclipse Memory Analyzer
– http://www.eclipse.org/mat/
– http://www.ibm.com/developerworks/java/jdk/tools/dtfj.html

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

Heapdump / Javadump Analyzer

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

Performance Messen: Weitere Möglichkeiten

• Print statements
– In rendered/visible computations to see how often executed
• print("panel2 evaluating rendered property");

– In the XPages root control events:
• before/afterPageLoad, afterRestoreView, before/afterRenderResponse.

– Custom control root events:
• before/afterPageLoad.

– In the document data source events:
• queryNewDocument, postSaveDocument, etc.

• Task Manager and/or Process Explorer
– Shows CPU usage & process memory usage as it happens

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

Performance Messen: Weitere Möglichkeiten

• Browser developer tools
– for watching network transactions, partial updates, response times
– BROWSER: Firebug, Developer Tools
– XPiNC: FirebugLite from ExtLib

• Java / Javascript Debugging
– Degrades performance but can inspect objectsUse the Eclipse Java
debugger.
– In Dominonotes.ini add these 2 options:
• JavaEnableDebug=1
• JavaDebugOptions=transport=dt_socket,server=y,suspend=n,address=8000

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

Optimierung – Schritt für Schritt

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

Step1: Original Code aus Beispieldatenbank

• Erzeugen einer NotesDocumentCollection
• Erzeugen eines JSON Strings aus den Werten in den
Dokumenten der Collection

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

Step1: Messergebnis

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

Step 2: UNID aus Item lesen

• Wie Step1, aber die UNID wird beim Speichern des
Dokument in einem item gespeichert

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

Step2: Messergebnis

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

Step3: JSON im Dokument erzeugen

• Statt die Werte einzeln aus den Items zu lesen, wird
der komplette JSON String in einem einzelnen Item
im Dokument gespeichert

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

Step 3: Messergebnis

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

Step 4: Erzeugung des JSON in einer Ansicht

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

Step 4: Messergebnis

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

StringBuilder vs String.concat

• Concatenation of Strings is very easy in Java - all
you need is a '+‘
• Each time you append something via '+'
(String.concat()) a new String is created, the old
stuff is copied, the new stuff is appended, and the
old String is thrown away. The bigger the String gets
the longer it takes - there is more to copy and more
garbage is produced.
• Accordingly to Arno Unkrig the optimal strategy is to
use String.concat() for 2 or 3 operands, and
StringBuilder for 4 or more operands
www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

StringBuilder vs String.concat

• When to use StringBuilder over '+' (String.concat()) ?
– use StringBuilder whenever you assemble a String in a loop
– Keep in mind that '+' isn't always a good idea

http://kaioa.com/node/59

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

Step 5: StringBuilder

• Verwenden des Stringbuilders zum Zusammenbau des
JSON

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

Step 5: Messergebnis

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

Step 6: Warum nicht gleich in Java …

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

Step 6: Messergebnis

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

Fragen?

Feedback gern auch per Email
ulrich_krause@bcc.biz

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

Themes

• Single document containing references to all your
CSS resources
– resource sections reference the CSS files
– control section define what CSS classes are applied to specific controls

• XML based and easy To learn
– creating a new theme document prefills sample content

• Can extend other themes
– <theme extends="webstandard">
– will automatically include all the resource and control definitions from
that theme

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

• Create your own themes from scratch.
– Extending an existing theme will include extra stylesheets and styles
that you might not need.

• Be prepared to spend more time writing css though

www.dnug.de
Social Collaboration 39: "Vernetzte Informationswelt“

• Global Application / Configuration properties

www.dnug.de

Contenu connexe

Tendances

Oracle-DB: Panorama-Sampler - Eigenes Workload Repository für Panorama
Oracle-DB: Panorama-Sampler - Eigenes Workload Repository für PanoramaOracle-DB: Panorama-Sampler - Eigenes Workload Repository für Panorama
Oracle-DB: Panorama-Sampler - Eigenes Workload Repository für PanoramaPeter Ramm
 
Oracle und Hochverfügbarkeit – Verschiedene Ansätze im Vergleich
Oracle und Hochverfügbarkeit – Verschiedene Ansätze im VergleichOracle und Hochverfügbarkeit – Verschiedene Ansätze im Vergleich
Oracle und Hochverfügbarkeit – Verschiedene Ansätze im VergleichDierk Lenz
 
Oracle-DB: Beeinflussen der Ausführungspläne von SQL-Statements ohne Code-Anp...
Oracle-DB: Beeinflussen der Ausführungspläne von SQL-Statements ohne Code-Anp...Oracle-DB: Beeinflussen der Ausführungspläne von SQL-Statements ohne Code-Anp...
Oracle-DB: Beeinflussen der Ausführungspläne von SQL-Statements ohne Code-Anp...Peter Ramm
 
Oracle-DB: Active Session History: into the deep
Oracle-DB: Active Session History: into the deepOracle-DB: Active Session History: into the deep
Oracle-DB: Active Session History: into the deepPeter Ramm
 
Web-Performance-Optimierung mit varnish
Web-Performance-Optimierung mit varnishWeb-Performance-Optimierung mit varnish
Web-Performance-Optimierung mit varnishSpeedPartner GmbH
 
Exadata with VM as Consolidation Plattform
Exadata with VM as Consolidation PlattformExadata with VM as Consolidation Plattform
Exadata with VM as Consolidation PlattformDaniele Massimi
 
Überblick Oracle Datenbank Hochverfügbarkeit
Überblick Oracle Datenbank HochverfügbarkeitÜberblick Oracle Datenbank Hochverfügbarkeit
Überblick Oracle Datenbank HochverfügbarkeitIleana Somesan
 
Oracle-DB: Sicheres Identifizieren von nicht relevanten indizes
Oracle-DB: Sicheres Identifizieren von nicht relevanten indizesOracle-DB: Sicheres Identifizieren von nicht relevanten indizes
Oracle-DB: Sicheres Identifizieren von nicht relevanten indizesPeter Ramm
 
Tipps und Skripts aus dem Leben eines Connections Admins
Tipps und Skripts aus dem Leben eines Connections AdminsTipps und Skripts aus dem Leben eines Connections Admins
Tipps und Skripts aus dem Leben eines Connections AdminsKlaus Bild
 
Web-Performance-Optimierung mit varnish
Web-Performance-Optimierung mit varnishWeb-Performance-Optimierung mit varnish
Web-Performance-Optimierung mit varnishSpeedPartner GmbH
 
Oracle Data Guard: Mit oder ohne Broker?
Oracle Data Guard: Mit oder ohne Broker?Oracle Data Guard: Mit oder ohne Broker?
Oracle Data Guard: Mit oder ohne Broker?Dierk Lenz
 
SQL Server Transaction Log Deep Dive Session - PASS Hamburg
SQL Server Transaction Log Deep Dive Session - PASS HamburgSQL Server Transaction Log Deep Dive Session - PASS Hamburg
SQL Server Transaction Log Deep Dive Session - PASS HamburgSascha Lorenz
 
JBoss EAP clustering
JBoss EAP clustering JBoss EAP clustering
JBoss EAP clustering hwilming
 
Oracle-DB: Systematische Rasterfahndung nach Performance-Antipattern
Oracle-DB: Systematische Rasterfahndung nach Performance-AntipatternOracle-DB: Systematische Rasterfahndung nach Performance-Antipattern
Oracle-DB: Systematische Rasterfahndung nach Performance-AntipatternPeter Ramm
 
JBoss AS / EAP Clustering
JBoss AS / EAP  ClusteringJBoss AS / EAP  Clustering
JBoss AS / EAP Clusteringhwilming
 

Tendances (15)

Oracle-DB: Panorama-Sampler - Eigenes Workload Repository für Panorama
Oracle-DB: Panorama-Sampler - Eigenes Workload Repository für PanoramaOracle-DB: Panorama-Sampler - Eigenes Workload Repository für Panorama
Oracle-DB: Panorama-Sampler - Eigenes Workload Repository für Panorama
 
Oracle und Hochverfügbarkeit – Verschiedene Ansätze im Vergleich
Oracle und Hochverfügbarkeit – Verschiedene Ansätze im VergleichOracle und Hochverfügbarkeit – Verschiedene Ansätze im Vergleich
Oracle und Hochverfügbarkeit – Verschiedene Ansätze im Vergleich
 
Oracle-DB: Beeinflussen der Ausführungspläne von SQL-Statements ohne Code-Anp...
Oracle-DB: Beeinflussen der Ausführungspläne von SQL-Statements ohne Code-Anp...Oracle-DB: Beeinflussen der Ausführungspläne von SQL-Statements ohne Code-Anp...
Oracle-DB: Beeinflussen der Ausführungspläne von SQL-Statements ohne Code-Anp...
 
Oracle-DB: Active Session History: into the deep
Oracle-DB: Active Session History: into the deepOracle-DB: Active Session History: into the deep
Oracle-DB: Active Session History: into the deep
 
Web-Performance-Optimierung mit varnish
Web-Performance-Optimierung mit varnishWeb-Performance-Optimierung mit varnish
Web-Performance-Optimierung mit varnish
 
Exadata with VM as Consolidation Plattform
Exadata with VM as Consolidation PlattformExadata with VM as Consolidation Plattform
Exadata with VM as Consolidation Plattform
 
Überblick Oracle Datenbank Hochverfügbarkeit
Überblick Oracle Datenbank HochverfügbarkeitÜberblick Oracle Datenbank Hochverfügbarkeit
Überblick Oracle Datenbank Hochverfügbarkeit
 
Oracle-DB: Sicheres Identifizieren von nicht relevanten indizes
Oracle-DB: Sicheres Identifizieren von nicht relevanten indizesOracle-DB: Sicheres Identifizieren von nicht relevanten indizes
Oracle-DB: Sicheres Identifizieren von nicht relevanten indizes
 
Tipps und Skripts aus dem Leben eines Connections Admins
Tipps und Skripts aus dem Leben eines Connections AdminsTipps und Skripts aus dem Leben eines Connections Admins
Tipps und Skripts aus dem Leben eines Connections Admins
 
Web-Performance-Optimierung mit varnish
Web-Performance-Optimierung mit varnishWeb-Performance-Optimierung mit varnish
Web-Performance-Optimierung mit varnish
 
Oracle Data Guard: Mit oder ohne Broker?
Oracle Data Guard: Mit oder ohne Broker?Oracle Data Guard: Mit oder ohne Broker?
Oracle Data Guard: Mit oder ohne Broker?
 
SQL Server Transaction Log Deep Dive Session - PASS Hamburg
SQL Server Transaction Log Deep Dive Session - PASS HamburgSQL Server Transaction Log Deep Dive Session - PASS Hamburg
SQL Server Transaction Log Deep Dive Session - PASS Hamburg
 
JBoss EAP clustering
JBoss EAP clustering JBoss EAP clustering
JBoss EAP clustering
 
Oracle-DB: Systematische Rasterfahndung nach Performance-Antipattern
Oracle-DB: Systematische Rasterfahndung nach Performance-AntipatternOracle-DB: Systematische Rasterfahndung nach Performance-Antipattern
Oracle-DB: Systematische Rasterfahndung nach Performance-Antipattern
 
JBoss AS / EAP Clustering
JBoss AS / EAP  ClusteringJBoss AS / EAP  Clustering
JBoss AS / EAP Clustering
 

En vedette

Speed up your XPages Application performance
Speed up your XPages Application performanceSpeed up your XPages Application performance
Speed up your XPages Application performanceMaarga Systems
 
XPages OneUIv2 Theme Deep Dive
XPages OneUIv2 Theme Deep DiveXPages OneUIv2 Theme Deep Dive
XPages OneUIv2 Theme Deep DiveWorkFlowStudios
 
IBM Connect 2014 - AD204: What's new in the IBM Domino Objects: By Example
IBM Connect 2014 - AD204: What's new in the IBM Domino Objects: By ExampleIBM Connect 2014 - AD204: What's new in the IBM Domino Objects: By Example
IBM Connect 2014 - AD204: What's new in the IBM Domino Objects: By ExampleIBM Connections Developers
 
RESTful services on IBM Domino/XWork
RESTful services on IBM Domino/XWorkRESTful services on IBM Domino/XWork
RESTful services on IBM Domino/XWorkJohn Dalsgaard
 
C/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino DevelopersC/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino DevelopersUlrich Krause
 
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...Paul Withers
 
IBM ConnectED 2015 - MAS103 XPages Performance and Scalability
IBM ConnectED 2015 - MAS103 XPages Performance and ScalabilityIBM ConnectED 2015 - MAS103 XPages Performance and Scalability
IBM ConnectED 2015 - MAS103 XPages Performance and ScalabilityPaul Withers
 
Life in the fast lane. Full speed XPages
Life in the fast lane. Full speed XPagesLife in the fast lane. Full speed XPages
Life in the fast lane. Full speed XPagesUlrich Krause
 
Transformations - a TLCC & Teamstudio Webinar
Transformations - a TLCC & Teamstudio WebinarTransformations - a TLCC & Teamstudio Webinar
Transformations - a TLCC & Teamstudio WebinarOliver Busse
 

En vedette (12)

Speed up your XPages Application performance
Speed up your XPages Application performanceSpeed up your XPages Application performance
Speed up your XPages Application performance
 
XPages OneUIv2 Theme Deep Dive
XPages OneUIv2 Theme Deep DiveXPages OneUIv2 Theme Deep Dive
XPages OneUIv2 Theme Deep Dive
 
XPages Performance Master Class - Survive in the fast lane on the Autobahn (E...
XPages Performance Master Class - Survive in the fast lane on the Autobahn (E...XPages Performance Master Class - Survive in the fast lane on the Autobahn (E...
XPages Performance Master Class - Survive in the fast lane on the Autobahn (E...
 
IBM Connect 2014 - AD204: What's new in the IBM Domino Objects: By Example
IBM Connect 2014 - AD204: What's new in the IBM Domino Objects: By ExampleIBM Connect 2014 - AD204: What's new in the IBM Domino Objects: By Example
IBM Connect 2014 - AD204: What's new in the IBM Domino Objects: By Example
 
RESTful services on IBM Domino/XWork
RESTful services on IBM Domino/XWorkRESTful services on IBM Domino/XWork
RESTful services on IBM Domino/XWork
 
C/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino DevelopersC/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino Developers
 
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
 
IBM Connections Cloud Administration
IBM Connections Cloud AdministrationIBM Connections Cloud Administration
IBM Connections Cloud Administration
 
IBM ConnectED 2015 - MAS103 XPages Performance and Scalability
IBM ConnectED 2015 - MAS103 XPages Performance and ScalabilityIBM ConnectED 2015 - MAS103 XPages Performance and Scalability
IBM ConnectED 2015 - MAS103 XPages Performance and Scalability
 
Life in the fast lane. Full speed XPages
Life in the fast lane. Full speed XPagesLife in the fast lane. Full speed XPages
Life in the fast lane. Full speed XPages
 
Transformations
TransformationsTransformations
Transformations
 
Transformations - a TLCC & Teamstudio Webinar
Transformations - a TLCC & Teamstudio WebinarTransformations - a TLCC & Teamstudio Webinar
Transformations - a TLCC & Teamstudio Webinar
 

Similaire à XPages: Performance-Optimierung - Ulrich Krause (eknori) SNoUG 2013

Pimp My SharePoint - Performanceprobleme vorbeugen, analysieren und beheben
Pimp My SharePoint - Performanceprobleme vorbeugen, analysieren und behebenPimp My SharePoint - Performanceprobleme vorbeugen, analysieren und beheben
Pimp My SharePoint - Performanceprobleme vorbeugen, analysieren und behebenDavid Schneider
 
OSMC 2011 | Collectd in der großen weiten Welt - Anbindung des Datensammlers ...
OSMC 2011 | Collectd in der großen weiten Welt - Anbindung des Datensammlers ...OSMC 2011 | Collectd in der großen weiten Welt - Anbindung des Datensammlers ...
OSMC 2011 | Collectd in der großen weiten Welt - Anbindung des Datensammlers ...NETWAYS
 
Tipps zur Performanceoptimierung für Liferay Portal
Tipps zur  Performanceoptimierung für Liferay PortalTipps zur  Performanceoptimierung für Liferay Portal
Tipps zur Performanceoptimierung für Liferay PortalStefan Hilpp
 
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...Peter Hecker
 
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?KurtStockinger
 
Elastic Stack: Grundlagen der zentralen Logdatenverwaltung (Webinar vom 15. A...
Elastic Stack: Grundlagen der zentralen Logdatenverwaltung (Webinar vom 15. A...Elastic Stack: Grundlagen der zentralen Logdatenverwaltung (Webinar vom 15. A...
Elastic Stack: Grundlagen der zentralen Logdatenverwaltung (Webinar vom 15. A...NETWAYS
 
Fanstatic pycon.de 2012
Fanstatic pycon.de 2012Fanstatic pycon.de 2012
Fanstatic pycon.de 2012Daniel Havlik
 
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit VagrantDeployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit VagrantChristoph Möller
 
Ajax in domino web-anwendungen - der nächste schritt
Ajax in domino web-anwendungen - der nächste schrittAjax in domino web-anwendungen - der nächste schritt
Ajax in domino web-anwendungen - der nächste schrittdominion
 
Dnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyondDnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyondUlrich Krause
 
digitalSTROM Developer Day 2011: Jump Start in die digitalSTROM-Server Entwic...
digitalSTROM Developer Day 2011: Jump Start in die digitalSTROM-Server Entwic...digitalSTROM Developer Day 2011: Jump Start in die digitalSTROM-Server Entwic...
digitalSTROM Developer Day 2011: Jump Start in die digitalSTROM-Server Entwic...digitalSTROM.org
 
Grundlagen postgresql
Grundlagen postgresqlGrundlagen postgresql
Grundlagen postgresqlinovex GmbH
 
Avoid Network-Issues and Polling
Avoid Network-Issues and PollingAvoid Network-Issues and Polling
Avoid Network-Issues and PollingKai Donato
 
Android Ice Cream Sandwich WJAX 2011
Android Ice Cream Sandwich WJAX 2011Android Ice Cream Sandwich WJAX 2011
Android Ice Cream Sandwich WJAX 2011Dominik Helleberg
 
ShareConf 2014: 10 Gründe warum der SharePoint langsam ist
ShareConf 2014: 10 Gründe warum der SharePoint langsam istShareConf 2014: 10 Gründe warum der SharePoint langsam ist
ShareConf 2014: 10 Gründe warum der SharePoint langsam istDavid Schneider
 
Skalierung & Performance
Skalierung & PerformanceSkalierung & Performance
Skalierung & Performanceglembotzky
 
Dnug 112014 modernization_openn_ntf_ersatzsession
Dnug 112014 modernization_openn_ntf_ersatzsessionDnug 112014 modernization_openn_ntf_ersatzsession
Dnug 112014 modernization_openn_ntf_ersatzsessionOliver Busse
 
Jug nbg containerplattform dcos
Jug nbg containerplattform dcosJug nbg containerplattform dcos
Jug nbg containerplattform dcosRalf Ernst
 

Similaire à XPages: Performance-Optimierung - Ulrich Krause (eknori) SNoUG 2013 (20)

Pimp My SharePoint - Performanceprobleme vorbeugen, analysieren und beheben
Pimp My SharePoint - Performanceprobleme vorbeugen, analysieren und behebenPimp My SharePoint - Performanceprobleme vorbeugen, analysieren und beheben
Pimp My SharePoint - Performanceprobleme vorbeugen, analysieren und beheben
 
OSMC 2011 | Collectd in der großen weiten Welt - Anbindung des Datensammlers ...
OSMC 2011 | Collectd in der großen weiten Welt - Anbindung des Datensammlers ...OSMC 2011 | Collectd in der großen weiten Welt - Anbindung des Datensammlers ...
OSMC 2011 | Collectd in der großen weiten Welt - Anbindung des Datensammlers ...
 
Tipps zur Performanceoptimierung für Liferay Portal
Tipps zur  Performanceoptimierung für Liferay PortalTipps zur  Performanceoptimierung für Liferay Portal
Tipps zur Performanceoptimierung für Liferay Portal
 
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
 
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?
 
JavaScript Performance
JavaScript PerformanceJavaScript Performance
JavaScript Performance
 
Elastic Stack: Grundlagen der zentralen Logdatenverwaltung (Webinar vom 15. A...
Elastic Stack: Grundlagen der zentralen Logdatenverwaltung (Webinar vom 15. A...Elastic Stack: Grundlagen der zentralen Logdatenverwaltung (Webinar vom 15. A...
Elastic Stack: Grundlagen der zentralen Logdatenverwaltung (Webinar vom 15. A...
 
Fanstatic pycon.de 2012
Fanstatic pycon.de 2012Fanstatic pycon.de 2012
Fanstatic pycon.de 2012
 
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit VagrantDeployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
 
Ajax in domino web-anwendungen - der nächste schritt
Ajax in domino web-anwendungen - der nächste schrittAjax in domino web-anwendungen - der nächste schritt
Ajax in domino web-anwendungen - der nächste schritt
 
Dnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyondDnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyond
 
digitalSTROM Developer Day 2011: Jump Start in die digitalSTROM-Server Entwic...
digitalSTROM Developer Day 2011: Jump Start in die digitalSTROM-Server Entwic...digitalSTROM Developer Day 2011: Jump Start in die digitalSTROM-Server Entwic...
digitalSTROM Developer Day 2011: Jump Start in die digitalSTROM-Server Entwic...
 
Grundlagen postgresql
Grundlagen postgresqlGrundlagen postgresql
Grundlagen postgresql
 
Avoid Network-Issues and Polling
Avoid Network-Issues and PollingAvoid Network-Issues and Polling
Avoid Network-Issues and Polling
 
Android Ice Cream Sandwich WJAX 2011
Android Ice Cream Sandwich WJAX 2011Android Ice Cream Sandwich WJAX 2011
Android Ice Cream Sandwich WJAX 2011
 
ShareConf 2014: 10 Gründe warum der SharePoint langsam ist
ShareConf 2014: 10 Gründe warum der SharePoint langsam istShareConf 2014: 10 Gründe warum der SharePoint langsam ist
ShareConf 2014: 10 Gründe warum der SharePoint langsam ist
 
Skalierung & Performance
Skalierung & PerformanceSkalierung & Performance
Skalierung & Performance
 
Dnug 112014 modernization_openn_ntf_ersatzsession
Dnug 112014 modernization_openn_ntf_ersatzsessionDnug 112014 modernization_openn_ntf_ersatzsession
Dnug 112014 modernization_openn_ntf_ersatzsession
 
Jug nbg containerplattform dcos
Jug nbg containerplattform dcosJug nbg containerplattform dcos
Jug nbg containerplattform dcos
 
Node.js
Node.jsNode.js
Node.js
 

Plus de BCC - Solutions for IBM Collaboration Software

Plus de BCC - Solutions for IBM Collaboration Software (19)

Connections 5.x to 6.0 migration
Connections 5.x to 6.0 migrationConnections 5.x to 6.0 migration
Connections 5.x to 6.0 migration
 
General Data Protection Regulation
General Data Protection RegulationGeneral Data Protection Regulation
General Data Protection Regulation
 
Systematisch: Von der alten in die neue Welt - Migrations-Szenarien
Systematisch: Von der alten in die neue Welt - Migrations-SzenarienSystematisch: Von der alten in die neue Welt - Migrations-Szenarien
Systematisch: Von der alten in die neue Welt - Migrations-Szenarien
 
MaRisk Andorderungen erfüllen - Analyse von Rechten und Rollen in IBM Domino ...
MaRisk Andorderungen erfüllen - Analyse von Rechten und Rollen in IBM Domino ...MaRisk Andorderungen erfüllen - Analyse von Rechten und Rollen in IBM Domino ...
MaRisk Andorderungen erfüllen - Analyse von Rechten und Rollen in IBM Domino ...
 
Protect your IBM Domino data from leaks with BCC DominoProtect
Protect your IBM Domino data from leaks with BCC DominoProtectProtect your IBM Domino data from leaks with BCC DominoProtect
Protect your IBM Domino data from leaks with BCC DominoProtect
 
IBM Connect 2016: Speaker Session with Teresa Deane, Senior Developer, BCC
IBM Connect 2016: Speaker Session with Teresa Deane, Senior Developer, BCCIBM Connect 2016: Speaker Session with Teresa Deane, Senior Developer, BCC
IBM Connect 2016: Speaker Session with Teresa Deane, Senior Developer, BCC
 
Dr. Strangelove, or how I learned to love plug-in development - SNoUG 2014
Dr. Strangelove, or how I learned to love plug-in development - SNoUG 2014Dr. Strangelove, or how I learned to love plug-in development - SNoUG 2014
Dr. Strangelove, or how I learned to love plug-in development - SNoUG 2014
 
Using Social Business Software and being compliant with EU data protection la...
Using Social Business Software and being compliant with EU data protection la...Using Social Business Software and being compliant with EU data protection la...
Using Social Business Software and being compliant with EU data protection la...
 
Keine Kompromisse! Mehr Sicherheit & Compliance für IBM Domino
Keine Kompromisse! Mehr Sicherheit & Compliance für IBM DominoKeine Kompromisse! Mehr Sicherheit & Compliance für IBM Domino
Keine Kompromisse! Mehr Sicherheit & Compliance für IBM Domino
 
Honey, I shrunk the data - Mehr Platz am IBM Domino Server
Honey, I shrunk the data - Mehr Platz am IBM Domino ServerHoney, I shrunk the data - Mehr Platz am IBM Domino Server
Honey, I shrunk the data - Mehr Platz am IBM Domino Server
 
Wie schützen Sie Ihre Messaging- & Collaboration-Infrastruktur? Lessons learn...
Wie schützen Sie Ihre Messaging- & Collaboration-Infrastruktur? Lessons learn...Wie schützen Sie Ihre Messaging- & Collaboration-Infrastruktur? Lessons learn...
Wie schützen Sie Ihre Messaging- & Collaboration-Infrastruktur? Lessons learn...
 
IBM Connect 2014 SPOT114: No Compromise on Compliance: Streamline Administrat...
IBM Connect 2014 SPOT114: No Compromise on Compliance: Streamline Administrat...IBM Connect 2014 SPOT114: No Compromise on Compliance: Streamline Administrat...
IBM Connect 2014 SPOT114: No Compromise on Compliance: Streamline Administrat...
 
Platz schaffen auf dem Domino - Compact, Compress, De-Duplicate - Ulrich Krau...
Platz schaffen auf dem Domino - Compact, Compress, De-Duplicate - Ulrich Krau...Platz schaffen auf dem Domino - Compact, Compress, De-Duplicate - Ulrich Krau...
Platz schaffen auf dem Domino - Compact, Compress, De-Duplicate - Ulrich Krau...
 
Deep Dive Domino Mail Routing - SMTP Cookbook - DNUG Herbstkonferenz 2013
Deep Dive Domino Mail Routing - SMTP Cookbook - DNUG Herbstkonferenz 2013Deep Dive Domino Mail Routing - SMTP Cookbook - DNUG Herbstkonferenz 2013
Deep Dive Domino Mail Routing - SMTP Cookbook - DNUG Herbstkonferenz 2013
 
Deep Dive AdminP Process - Admin and Infrastructure Track at UKLUG 2012
Deep Dive AdminP Process - Admin and Infrastructure Track at UKLUG 2012Deep Dive AdminP Process - Admin and Infrastructure Track at UKLUG 2012
Deep Dive AdminP Process - Admin and Infrastructure Track at UKLUG 2012
 
Platz da! Platz schaffen auf dem Domino Server - Vortrag von Ulrich Krause be...
Platz da! Platz schaffen auf dem Domino Server - Vortrag von Ulrich Krause be...Platz da! Platz schaffen auf dem Domino Server - Vortrag von Ulrich Krause be...
Platz da! Platz schaffen auf dem Domino Server - Vortrag von Ulrich Krause be...
 
Wie gewährleisten Sie die Einhaltung von Sicherheitsanforderungen an Ihre Mes...
Wie gewährleisten Sie die Einhaltung von Sicherheitsanforderungen an Ihre Mes...Wie gewährleisten Sie die Einhaltung von Sicherheitsanforderungen an Ihre Mes...
Wie gewährleisten Sie die Einhaltung von Sicherheitsanforderungen an Ihre Mes...
 
Wie schützen Sie Ihre E-Mail-Kommunikation? Kurzfristige Lösungsansätze bis z...
Wie schützen Sie Ihre E-Mail-Kommunikation? Kurzfristige Lösungsansätze bis z...Wie schützen Sie Ihre E-Mail-Kommunikation? Kurzfristige Lösungsansätze bis z...
Wie schützen Sie Ihre E-Mail-Kommunikation? Kurzfristige Lösungsansätze bis z...
 
BCC solutions for IBM Notes & Domino Infrastructure & Administration
BCC solutions for IBM Notes & Domino Infrastructure & AdministrationBCC solutions for IBM Notes & Domino Infrastructure & Administration
BCC solutions for IBM Notes & Domino Infrastructure & Administration
 

XPages: Performance-Optimierung - Ulrich Krause (eknori) SNoUG 2013

  • 1. Social Collaboration 39: "Vernetzte Informationswelt" XPages: Performance-Optimierung Heinz Ulrich Krause BCC Unternehmensberatung GmbH http://www.bcc.biz www.dnug.de
  • 2. Social Collaboration 39: "Vernetzte Informationswelt“ • Administrator /Developer seit 1993 • Senior Software Architect bei BCC • OpenNTF Contributor • IBM Champion 2011/2012/2013 • Blog http://www.eknori.de • Notes Forum (http://www.atnotes.de) www.dnug.de
  • 3. Social Collaboration 39: "Vernetzte Informationswelt“ Agenda • • • • • • • • Was kann die Performance beeinflussen ? Java oder JavaScript ? ViewNavigator oder GetNextDocument Stringbuilder oder Concat (+) JSF Lifecycle Listener Partial Update / Partial Execute Variable Resolver Tools www.dnug.de
  • 4. Social Collaboration 39: "Vernetzte Informationswelt“ Typischer XPages Request www.dnug.de
  • 5. Social Collaboration 39: "Vernetzte Informationswelt“ Hardware • Die Hardware hat einen nicht unerheblichen Einfluß auf die Performance. Es gibt 3 Kernelemente – CPU – Arbeitsspeicher – Festplatten www.dnug.de
  • 6. Social Collaboration 39: "Vernetzte Informationswelt“ Hardware • CPU – Anzahl Kerne / Taktrate / Cache –  Schlechte Antwortzeiten • Arbeitsspeicher – Obergrenze durch das Betriebssystem vorgegeben –  Skalierbarkeit • Schwache CPU und zu kleiner Arbeitsspeicher führen zu – Schlechter Gesamtperformance – Schlechten Antwortzeiten – Server “hängt” www.dnug.de
  • 7. Social Collaboration 39: "Vernetzte Informationswelt“ Netzwerk • Bandbreite – Geschwindigkeit, mit der Daten übertragen werden • Latenz – Beanspruchte Zeit einer Datenübertragung zwischen mehreren Computer an einem Netzwerk • Je größer die Bandbreite und je kleiner die Latenz desto "besser" ist die Verbindung www.dnug.de
  • 8. Social Collaboration 39: "Vernetzte Informationswelt“ Client & Browser • Hardware • Wie viele Daten (Requests / Responses) werden übertragen • Wie viele Daten werden übertragen (Größe) • Wie werden Resourcen gecached • Wie viel CSJS wird ausgeführt • Größe / Komplexität des CSS • Komplexität des Seitenaufbau www.dnug.de
  • 9. Social Collaboration 39: "Vernetzte Informationswelt“ Performancebeeinträchtigungen • Browser / HTTP Server – Netzwerk: Latenz, Bandbreite, Dateigröße – Browser: Anzahl gleichzeitiger Downloads (IE7 = 2 , IE8 = 6 ) • HTTP Server / App Server – HTTP Server JVM Memory Allocation (heap size) & Garbage Collector – CPU Time – Anzahl Threads, DEFAULT: 40 , konfigurierbar in Domino Administrator • App Server / Domino context – Lesen von Designelementen (Xpage, .class files, jar files, etc) – Je mehr Design Elemente, desto mehr Netzwerkanfragen – Anzahl Backend API Calls, insbesondere bei großen Datenmengen www.dnug.de
  • 10. Social Collaboration 39: "Vernetzte Informationswelt“ Performancebeeinträchtigungen • Servlet / JSF Lifecycle – Persitence mode  Zugriffe auf das Dateisystem – Serialisierung von Anfragen ( multiple partial update ) – Neuberechnung von Werten in allen Phasen des JSF Lifecycle • Browser/ Client JavaScript/ Dojo – Inline JavaScript verhindert die Ausführung von weiteren HTML – AJAX requests an Dojo Module, die nicht geladen sind www.dnug.de
  • 11. Social Collaboration 39: "Vernetzte Informationswelt“ Allgemeine Massnahmen zur Performancesteigerung • notes.ini – HTTPJVMMaxHeapSizeSet=1 – HTTPJVMMaxHeapSize=256M • sollte auf ¼ des verfügbaren RAM gesetzt werden • Domino Administrator – HTTP server "Enable logging to" abschalten, wenn nicht benötigt – HTTP server thread count – defaults to 40 • Debugging abschalten – JavaEnableDebug=1 – JavaDebugOptions=transport=dt_socket,server=y,suspend=n,address=8000 – JavascriptEnableDebug=1 ( ab Version 9 ) www.dnug.de
  • 12. Social Collaboration 39: "Vernetzte Informationswelt“ Nutzung des Arbeitsspeichers optimieren • xsp.persistence.mode= – Defines the persistence mode for the JSF pages • file: Alle Seiten werden auf die Festplatte geschrieben • fileex: Alle Seiten werden auf die Festplatte geschrieben; nur die aktuelle Seite befindet sich im Arbeitsspeicher • <else>: Alle Seiten werden im Arbeitsspeicher gehalten www.dnug.de
  • 13. Social Collaboration 39: "Vernetzte Informationswelt“ XPages Design Optimierung • „Simple Actions“ verwenden. Keine Buttons oder Links mit umfangreichem JS • Reduzierung der Berechnungen im Lifecycle • partial update / partial refresh • partial execute • disableValidators & immediate event • Reduzierung der Berechnungen zur dynamischen Anzeige von Elementen ( rendered / loaded ) • Variable Resolver verwenden • Repeat Control & Views • viewEntry.getColumnValue statt viewEntry.getDocument.getColumn • Domino View data source dataCache property wenn möglich www.dnug.de
  • 14. Social Collaboration 39: "Vernetzte Informationswelt“ “Laden” oder “Anzeigen” • # – Wird jedes Mal ausgeführt, wenn die Seite aufgebaut wird • Wenn Werte sich ändern. (Computed values / Abhängigkeiten ) • $ – Wird nur beim ersten Seitenaufbau ausgeführt. • Wenn sich Werte nicht ändern ( Label ) www.dnug.de
  • 15. Social Collaboration 39: "Vernetzte Informationswelt“ JavaScript/CSS Aggregation • Faßt mehrere DOJO Module, CSS / JS files in einer einzigen Datei zusammen • • • • Weniger Anfragen vom Browser an den Server Wirkt sich in Netzwerken mit hoher Latenz Performance steigernd aus Performanteres Parsen von CSS / JS Weniger Verbindungen zum Server Aufd dem Server: xsp.properties: xsp.resources.aggregate=true www.dnug.de
  • 16. Social Collaboration 39: "Vernetzte Informationswelt“ JavaScript/CSS Aggregation www.dnug.de
  • 17. Social Collaboration 39: "Vernetzte Informationswelt“ XPages PreLoad • XPagesPreload=1 • Neues Feature in Notes / Domino 8.5.3 • Server und Client • Java classes from the XPages runtime plug-ins – loaded from a fixed list of runtime classes ( 435 in ND 8.5.3 ) – com.ibm.xsp.core, common utility, JS wrapper, FSF runtime classes • Java classes referenced in *-faces.config.xml – XPages control renderer, data sources, complex types www.dnug.de
  • 18. Social Collaboration 39: "Vernetzte Informationswelt“ XPages PreLoad • XPagesPreloadDB=Server!!Db.nsf/XPage.xsp, myDb.nsf – Arbeitet auf Applikationsebene – Die Anwendung wird beim Client/Serverstart in den Speicher geladen. Dies passiert auch, wenn die Anwendung erstmalig im Browser geöffnet wird – Für jeden Eintrag in der notes.ini Variable wird eine XPage URL generiert und an den Server geschickt – Die Anwendung wird geladen und das HTML generiert – Die XPages Runtime verwirft das HTML, behält aber die Anwendung im Speicher www.dnug.de
  • 19. Social Collaboration 39: "Vernetzte Informationswelt“ Scoped Variables • applicationScope – Für ALLE User einer Anwendung. – Werden verworfen, wenn der letzte User die Anwendung geschlossen hat. – allgemeine Anwendungskonfiguration • sessionScope – – – – Für EINEN User während der Session dieses Users. Wird nach einer bestimmten Zeit verworfen. Kein Zugriff auf die Inhalte eines anderen Users User bezogene Anwendungskonfiguration ( Sprache / Theme ) www.dnug.de
  • 20. Social Collaboration 39: "Vernetzte Informationswelt“ Scoped Variables (cont.) • viewScope – Nur auf der aktuell angezeigten Seite verfügbar – Inhalt wird beim Wechsel zu einer anderen Seite verworfen – Übertragung von Daten zwischen Elementen der Seite • requestScope – Verfügbar nur während einer einzelnen Aktion. – Umfasst auch die Aktualisierung der Seite. www.dnug.de
  • 21. Social Collaboration 39: "Vernetzte Informationswelt“ Application Scope aktualisieren www.dnug.de
  • 22. Social Collaboration 39: "Vernetzte Informationswelt“ JSF Lifecycle www.dnug.de
  • 23. Social Collaboration 39: "Vernetzte Informationswelt“ XPages Lifecycle Listener • Was passiert in den einzelnen Phasen? Ulrich Krause: http://openntf.org/XSnippets.nsf/snippet.xsp?id=a-simple-lifecyclelistenerwww.dnug.de
  • 24. Social Collaboration 39: "Vernetzte Informationswelt“ XPages Masterclass http://www.openntf.org/internal/home.nsf/project.xsp?action=openDocument&name=XPages%20Masterclass www.dnug.de
  • 25. Social Collaboration 39: "Vernetzte Informationswelt“ DataContext • Kann als globale Variable bezeichnet werden • Kann dynamisch beim Laden einer Seite berechnet werden – Beispiel: ${javascript:@Today()} • Kann an beliebige Elemente einer Seite gebunden werden – XPage, Custom Control or Panel • Kann über Expression Language referenziert werden – At no point in the references do you run SSJS – Not having to go through the SSJS parser www.dnug.de
  • 26. Social Collaboration 39: "Vernetzte Informationswelt“ DataContext – ACHTUNG !!!! • Niemals dynamisch berechnen !!. – Die Berechnung erfolgt mehrfach, auch bei einem partial refresh www.dnug.de
  • 27. Social Collaboration 39: "Vernetzte Informationswelt“ DataContext – ACHTUNG !!!! www.dnug.de
  • 28. Social Collaboration 39: "Vernetzte Informationswelt“ Partial Refresh / Update (Pro) • Reduzierung der Berechnungen im renderResponse – Weniger Rechenaufwand auf dem Server • Kleinere Datenmengen, die vom Server übertragen werden – Reduzierung der Datenmenge im Netzwerk • Bessere User / Browser experience – Während der Aktualisierung bleibt die Seite weiterhin sichtbar – Das Aktualisieren von nur kleinen Bereichen einer Webseite ist schneller als der vollständige Neuaufbau www.dnug.de
  • 29. Social Collaboration 39: "Vernetzte Informationswelt“ Partial Refresh / Update (Cons) • Abhängigkeiten ausserhalb der refreshID – Bereiche, die eine Abhängigkeit zu dem neu berechneten Bereich haben, werden nicht aktualisiert – Vorsicht, wenn das partial Update für Bereiche aktiviert wird, die bisher vollständig aktualisiert wurden • Es kann nur eine refreshID angegeben werden – Diesem Restriktion kann mit CSJS umgangen werden, allerdings werden die einzelnen Aktualisierungen seriell abgearbeitet www.dnug.de http://www.timtripcony.com/blog.nsf/d6plinks/TTRY-84B6VP
  • 30. Social Collaboration 39: "Vernetzte Informationswelt“ Partial Refresh / Update (Cons) • Mehrere Aktualisierungen – http://www.timtripcony.com/blog.nsf/d6plinks/TTRY-84B6VP www.dnug.de
  • 31. Social Collaboration 39: "Vernetzte Informationswelt“ Partial Execution • Reduziert den Rechenaufwand in den 3 “dataprocessing” Phasen – Weniger Arbeit für den Server, bessere Antwortzeiten • Abhängigkeiten ausserhalb der exec area – Werte, die sich in Feldern ausserhalb der exec area liegen, werden nicht berücksichtigt. – Keine Aktualisierung dieser Werte und keine Aktualisierung von Dokumenten – Enabling Partial Exec where it was previously full execution may lead to functional problems where values are out-of date in the onclick script or in the redisplayed page. www.dnug.de
  • 32. Social Collaboration 39: "Vernetzte Informationswelt“ Partial Execution (cont.) • onclick Event Handler muss sich in der exec area befinden – The ApplyRequestValues phase prepares for the invokeApplication phase. – The onclick simple action or SSJS script won't occur if outside the partial exec area www.dnug.de
  • 33. Social Collaboration 39: "Vernetzte Informationswelt“ Partial Execution • execMode neu ab 8.5.1 • Setzen der execId in V8.5.1 und V9 www.dnug.de
  • 34. Social Collaboration 39: "Vernetzte Informationswelt“ disableValidators / immediate • disableValidators – – – – JSF Lifecycle durchläuft alle Phasen (1-6) Keine Validierung der Daten Converters funktionieren weiterhin. Werte in Dokumenten werden aktualisiert • Sven Hasselbach – “Disable all validators at once” (http://hasselba.ch/blog/?p=1106) • Immediate – – – – JSF Lifecycle durchläuft nur Phasen (1, 2, 6) Keine Datenverarbeitung Werte in Dokumenten werden nicht aktualisiert Event Handler onclick scripts und renderResponse Berechnungen werden ausgeführt www.dnug.de
  • 35. Social Collaboration 39: "Vernetzte Informationswelt“ Minimize work in rendered/ visible computation • Most properties, like CSS “style” are only computed in the RenderResponse phase • Edit Box and input “value” properties are used in Data Processing phases and RenderResponse phase • Data Source properties are computed during RenderResponse – Results are cached for the next request's Data Processing and InvokeApplication phases www.dnug.de
  • 36. Social Collaboration 39: "Vernetzte Informationswelt“ Minimize work in rendered / visible computation • “Rendered” wird in allen Phasen des Lifecycle neu berechnet. • Nicht in jeder Eigenschaft neu berechnen – @DbLookup, @DbColumn, getDocumentByKey – Neuberechnung über viewScope steuern www.dnug.de
  • 37. Social Collaboration 39: "Vernetzte Informationswelt“ Bilder • Richtigen Bildtypen verwenden – JPEG für komplexe und detaillierte Darstellungen – PNG/GIF für Schaltflächen, Tranzparenz • HTML <img> tag “width” und “height” Attribute verwenden • Richtige Größe verwenden – Keine Anpassung der Größe zur Laufzeit über HTML <img> tag “width” und “height” Attribute – Bilder, die grösser sind, als benötigt, benötigen mehr Bandbreite www.dnug.de
  • 38. Social Collaboration 39: "Vernetzte Informationswelt“ Image Sprites • CSS Image Sprites verwenden – viele kleine Bilder in einem einzigen Image zusammenfassen – CSS erstellen, um nur den benötigten Teil des Image Sprites anzuzeigen – Image Sprites unterstützen das “alt” Attribut nicht. Daher das “title” Attribut verwenden bei barrierefreier Programmierung – Online Tools zur Erstellung von Sprites – http://spritegen.website-performance.org/ www.dnug.de
  • 39. Social Collaboration 39: "Vernetzte Informationswelt“ Image Sprites http://www.w3schools.com/css/tryit.asp?filename=trycss_sprites_img www.dnug.de
  • 40. Social Collaboration 39: "Vernetzte Informationswelt“ Performance Messen: XPages Toolbox • XPages Anwendung – Funktioniert auf dem Server und dem Client – NSF muss auf dem Server/ Notes Client installiert werden – profiler.jar file in den JVM Start Parametern eintragen • Misst CPU und Speicherauslastung • OpenNTF.org Projekt – Kostenlos und Open Source – http://www.openntf.org/internal/home.nsf/project.xsp?action=openDo cument&name=XPages%20Toolbox • Backend Classes Profiling in 8.5.2 hinzugefügt www.dnug.de
  • 41. Social Collaboration 39: "Vernetzte Informationswelt“ Performance Messen: XPages Toolbox www.dnug.de
  • 42. Social Collaboration 39: "Vernetzte Informationswelt“ Performance Messen: XPages Toolbox • Erzeugen eines Heap Dump der JVM – Über einen Button im XPages Profiler – Über die Domino Console • tell http xsp heapdump (triggers com.ibm.jvm.Dump.HeapDump()) • tell http xsp javadump (triggers com.ibm.jvm.Dump.JavaDump()) • Analysieren des Dumps mit Eclipse Memory Analyzer – http://www.eclipse.org/mat/ – http://www.ibm.com/developerworks/java/jdk/tools/dtfj.html www.dnug.de
  • 43. Social Collaboration 39: "Vernetzte Informationswelt“ Heapdump / Javadump Analyzer www.dnug.de
  • 44. Social Collaboration 39: "Vernetzte Informationswelt“ Performance Messen: Weitere Möglichkeiten • Print statements – In rendered/visible computations to see how often executed • print("panel2 evaluating rendered property"); – In the XPages root control events: • before/afterPageLoad, afterRestoreView, before/afterRenderResponse. – Custom control root events: • before/afterPageLoad. – In the document data source events: • queryNewDocument, postSaveDocument, etc. • Task Manager and/or Process Explorer – Shows CPU usage & process memory usage as it happens www.dnug.de
  • 45. Social Collaboration 39: "Vernetzte Informationswelt“ Performance Messen: Weitere Möglichkeiten • Browser developer tools – for watching network transactions, partial updates, response times – BROWSER: Firebug, Developer Tools – XPiNC: FirebugLite from ExtLib • Java / Javascript Debugging – Degrades performance but can inspect objectsUse the Eclipse Java debugger. – In Dominonotes.ini add these 2 options: • JavaEnableDebug=1 • JavaDebugOptions=transport=dt_socket,server=y,suspend=n,address=8000 www.dnug.de
  • 46. Social Collaboration 39: "Vernetzte Informationswelt“ Optimierung – Schritt für Schritt www.dnug.de
  • 47. Social Collaboration 39: "Vernetzte Informationswelt“ Step1: Original Code aus Beispieldatenbank • Erzeugen einer NotesDocumentCollection • Erzeugen eines JSON Strings aus den Werten in den Dokumenten der Collection www.dnug.de
  • 48. Social Collaboration 39: "Vernetzte Informationswelt“ Step1: Messergebnis www.dnug.de
  • 49. Social Collaboration 39: "Vernetzte Informationswelt“ Step 2: UNID aus Item lesen • Wie Step1, aber die UNID wird beim Speichern des Dokument in einem item gespeichert www.dnug.de
  • 50. Social Collaboration 39: "Vernetzte Informationswelt“ Step2: Messergebnis www.dnug.de
  • 51. Social Collaboration 39: "Vernetzte Informationswelt“ Step3: JSON im Dokument erzeugen • Statt die Werte einzeln aus den Items zu lesen, wird der komplette JSON String in einem einzelnen Item im Dokument gespeichert www.dnug.de
  • 52. Social Collaboration 39: "Vernetzte Informationswelt“ Step 3: Messergebnis www.dnug.de
  • 53. Social Collaboration 39: "Vernetzte Informationswelt“ Step 4: Erzeugung des JSON in einer Ansicht www.dnug.de
  • 54. Social Collaboration 39: "Vernetzte Informationswelt“ Step 4: Messergebnis www.dnug.de
  • 55. Social Collaboration 39: "Vernetzte Informationswelt“ StringBuilder vs String.concat • Concatenation of Strings is very easy in Java - all you need is a '+‘ • Each time you append something via '+' (String.concat()) a new String is created, the old stuff is copied, the new stuff is appended, and the old String is thrown away. The bigger the String gets the longer it takes - there is more to copy and more garbage is produced. • Accordingly to Arno Unkrig the optimal strategy is to use String.concat() for 2 or 3 operands, and StringBuilder for 4 or more operands www.dnug.de
  • 56. Social Collaboration 39: "Vernetzte Informationswelt“ StringBuilder vs String.concat • When to use StringBuilder over '+' (String.concat()) ? – use StringBuilder whenever you assemble a String in a loop – Keep in mind that '+' isn't always a good idea http://kaioa.com/node/59 www.dnug.de
  • 57. Social Collaboration 39: "Vernetzte Informationswelt“ Step 5: StringBuilder • Verwenden des Stringbuilders zum Zusammenbau des JSON www.dnug.de
  • 58. Social Collaboration 39: "Vernetzte Informationswelt“ Step 5: Messergebnis www.dnug.de
  • 59. Social Collaboration 39: "Vernetzte Informationswelt“ Step 6: Warum nicht gleich in Java … www.dnug.de
  • 60. Social Collaboration 39: "Vernetzte Informationswelt“ Step 6: Messergebnis www.dnug.de
  • 61. Social Collaboration 39: "Vernetzte Informationswelt“ Fragen? Feedback gern auch per Email ulrich_krause@bcc.biz www.dnug.de
  • 62. Social Collaboration 39: "Vernetzte Informationswelt“ www.dnug.de
  • 63. Social Collaboration 39: "Vernetzte Informationswelt“ Themes • Single document containing references to all your CSS resources – resource sections reference the CSS files – control section define what CSS classes are applied to specific controls • XML based and easy To learn – creating a new theme document prefills sample content • Can extend other themes – <theme extends="webstandard"> – will automatically include all the resource and control definitions from that theme www.dnug.de
  • 64. Social Collaboration 39: "Vernetzte Informationswelt“ • Create your own themes from scratch. – Extending an existing theme will include extra stylesheets and styles that you might not need. • Be prepared to spend more time writing css though www.dnug.de
  • 65. Social Collaboration 39: "Vernetzte Informationswelt“ • Global Application / Configuration properties www.dnug.de