21
Open Source IT Open Source IT Open Source IT Open Source IT- - -Dienstleister Dienstleister Dienstleister Dienstleister Performanceoptimierung Allgemeine Regeln und Werkzeuge am Beispiel Liferay-Portal Verfasser: Konstantinos Kododimos

Allgemeine Regeln und Werkzeuge am Beispiel Liferay … · Open Source ITOpen Source IT- ---DienstleisterDienstleister Performanceoptimierung Allgemeine Regeln und Werkzeuge am Beispiel

  • Upload
    hadung

  • View
    213

  • Download
    0

Embed Size (px)

Citation preview

Open Source ITOpen Source ITOpen Source ITOpen Source IT----DienstleisterDienstleisterDienstleisterDienstleister

Performanceoptimierung Allgemeine Regeln und Werkzeuge

am Beispiel Liferay-Portal

Verfasser: Konstantinos Kododimos

Folie: 2 • © comundus GmbH 24. Juni 2015 • www.comundus.com

PerformancePerformancePerformancePerformance

VorteilVorteilVorteilVorteil::::Extrem schnell

NachteilNachteilNachteilNachteil::::Nur eine Person transportieren

Folie: 3 • © comundus GmbH 24. Juni 2015 • www.comundus.com

Viele Daten und BenutzerViele Daten und BenutzerViele Daten und BenutzerViele Daten und Benutzer

VorteilVorteilVorteilVorteil::::Viele Menschentransportieren

NachteilNachteilNachteilNachteil::::Sehr langsam

Folie: 4 • © comundus GmbH 24. Juni 2015 • www.comundus.com

Studie Studie Studie Studie –––– Ausstieg von WebseitenAusstieg von WebseitenAusstieg von WebseitenAusstieg von Webseiten

Quelle: http://www.seo2b.de/blog/id-5-tipps-fuer-mobile-seo-im-m-commerce.html

Folie: 5 • © comundus GmbH 24. Juni 2015 • www.comundus.com

Performance Performance Performance Performance mit vielen Daten und Benutzermit vielen Daten und Benutzermit vielen Daten und Benutzermit vielen Daten und Benutzer

VorteilVorteilVorteilVorteil::::• Viele Menschen

transportieren

• Extrem schnell

• ModernesDesign

• Kein ICE ☺

Folie: 6 • © comundus GmbH 24. Juni 2015 • www.comundus.com

• Regel 1 Regel 1 Regel 1 Regel 1 ---- LegeLegeLegeLege die Performancedie Performancedie Performancedie Performance----ZieleZieleZieleZiele am am am am AnfangAnfangAnfangAnfang des des des des ProjektesProjektesProjektesProjektes festfestfestfest

• WelcheWelcheWelcheWelche Hardware Hardware Hardware Hardware wirdwirdwirdwird bereitgestelltbereitgestelltbereitgestelltbereitgestellt????

• WannWannWannWann sindsindsindsind die die die die SpitzenzeitenSpitzenzeitenSpitzenzeitenSpitzenzeiten????

• WannWannWannWann tretentretentretentreten DauerbelastungenDauerbelastungenDauerbelastungenDauerbelastungen auf?auf?auf?auf?

• WelcheWelcheWelcheWelche IntegrationspunkteIntegrationspunkteIntegrationspunkteIntegrationspunkte bzwbzwbzwbzw. . . . SchnittstellenSchnittstellenSchnittstellenSchnittstellen werdewerdewerdewerde ichichichich benötigenbenötigenbenötigenbenötigen????

• Identifiziere potenzielle Identifiziere potenzielle Identifiziere potenzielle Identifiziere potenzielle Risiken Risiken Risiken Risiken frühzeitigfrühzeitigfrühzeitigfrühzeitig!!!!

Entwicklerregeln für eine bessere PerformanceEntwicklerregeln für eine bessere PerformanceEntwicklerregeln für eine bessere PerformanceEntwicklerregeln für eine bessere Performance

Folie: 7 • © comundus GmbH 24. Juni 2015 • www.comundus.com

• Regel 2 Regel 2 Regel 2 Regel 2 –––– Hardware Hardware Hardware Hardware istististist endlichendlichendlichendlich

Entwicklerregeln für eine bessere PerformanceEntwicklerregeln für eine bessere PerformanceEntwicklerregeln für eine bessere PerformanceEntwicklerregeln für eine bessere Performance

Folie: 8 • © comundus GmbH 24. Juni 2015 • www.comundus.com

• Regel 3 Regel 3 Regel 3 Regel 3 –––– ErweitereErweitereErweitereErweitere deinedeinedeinedeine TrickkisteTrickkisteTrickkisteTrickkiste

• SchauSchauSchauSchau dirdirdirdir auchauchauchauch andereandereandereandere Tools anTools anTools anTools an

• IstIstIstIst die Art die Art die Art die Art wiewiewiewie du du du du entwickeltsentwickeltsentwickeltsentwickelts nochnochnochnoch Up To Date?Up To Date?Up To Date?Up To Date?

Entwicklerregeln für eine bessere PerformanceEntwicklerregeln für eine bessere PerformanceEntwicklerregeln für eine bessere PerformanceEntwicklerregeln für eine bessere Performance

Folie: 9 • © comundus GmbH 24. Juni 2015 • www.comundus.com

• Regel 4 Regel 4 Regel 4 Regel 4 –––– SchreibeSchreibeSchreibeSchreibe keinenkeinenkeinenkeinen schlechtenschlechtenschlechtenschlechten QuellcodeQuellcodeQuellcodeQuellcode

• KeineKeineKeineKeine ZeitZeitZeitZeit –––– KeineKeineKeineKeine AusredeAusredeAusredeAusrede

• JunitJunitJunitJunit

• Reviews !!!Reviews !!!Reviews !!!Reviews !!!

• SonarqubeSonarqubeSonarqubeSonarqube –––– QualitätQualitätQualitätQualität des des des des SourcecodeSourcecodeSourcecodeSourcecode prüfenprüfenprüfenprüfen

• http://www.sonarqube.org/

• Konventionen einhalten Konventionen einhalten Konventionen einhalten Konventionen einhalten –––– so gut es gehtso gut es gehtso gut es gehtso gut es geht

Entwicklerregeln für eine bessere PerformanceEntwicklerregeln für eine bessere PerformanceEntwicklerregeln für eine bessere PerformanceEntwicklerregeln für eine bessere Performance

Folie: 10 • © comundus GmbH 24. Juni 2015 • www.comundus.com

• Regel 5 Regel 5 Regel 5 Regel 5 –––– Teste dein ProgrammTeste dein ProgrammTeste dein ProgrammTeste dein Programm

• JunitJunitJunitJunit

• Mocks

• WebstressWebstressWebstressWebstress----ToolsToolsToolsTools

• JMeter

• http://www.opensourcetesting.org/performance.php

• ReviewsReviewsReviewsReviews

• SonarqubeSonarqubeSonarqubeSonarqube –––– QualitätQualitätQualitätQualität des des des des SourcecodeSourcecodeSourcecodeSourcecode prüfenprüfenprüfenprüfen

• http://www.sonarqube.org/

Entwicklerregeln für eine bessere PerformanceEntwicklerregeln für eine bessere PerformanceEntwicklerregeln für eine bessere PerformanceEntwicklerregeln für eine bessere Performance

Folie: 11 • © comundus GmbH 24. Juni 2015 • www.comundus.com

Liferay Portal ist eine Standard Java 2 Enterprise Edition - J2EE-Anwendung. Diese Anwendung wird auf dem Application Server

ausgeführt, welche in Java Virtual Machine (JVM) läuft, die wiederum als Standard-Anwendung im Betriebssystem läuft.

LiferayLiferayLiferayLiferay Portal Portal Portal Portal –––– ZwiebelmodellZwiebelmodellZwiebelmodellZwiebelmodell

Folie: 12 • © comundus GmbH 24. Juni 2015 • www.comundus.com

• ProzessorProzessorProzessorProzessor monitoringmonitoringmonitoringmonitoring

• System System System System LadezeitenLadezeitenLadezeitenLadezeiten

• System System System System ResourcenResourcenResourcenResourcen

• CPU

• Mem

• HDD

• Netzwerk

• Linux Linux Linux Linux

• vmstat -t 1

• netstat -nlpt

Liferay Portal Liferay Portal Liferay Portal Liferay Portal –––– BetriebssystemBetriebssystemBetriebssystemBetriebssystem

Folie: 13 • © comundus GmbH 24. Juni 2015 • www.comundus.com

• Linux Linux Linux Linux

• vmstatvmstatvmstatvmstat ----t t t t 1111

• gibt tabellarisch Auskunft über Prozesse, Arbeitsspeicher, Auslagerung sowie Festplatten- und Prozessor-Aktivitäten

• NetstatNetstatNetstatNetstat

• Diagnose-Werkzeug, mit dem man verschiedene Informationen über den Status der Netzwerkschnittstelle(n) in Erfahrung bringen kann

Liferay Portal Liferay Portal Liferay Portal Liferay Portal –––– BetriebssystemBetriebssystemBetriebssystemBetriebssystem

Folie: 14 • © comundus GmbH 24. Juni 2015 • www.comundus.com

• Garbage Garbage Garbage Garbage Collector Collector Collector Collector configurationconfigurationconfigurationconfiguration

• Serial Collector Serial Collector Serial Collector Serial Collector –––– Standard Collector Standard Collector Standard Collector Standard Collector imimimim JDKJDKJDKJDK

• Guter Collector für Desktop basierte Applikationen, die auf einem Prozessor laufen

• Parallel CollectorParallel CollectorParallel CollectorParallel Collector

• Guter Collector für Server basierte System, die auf mehreren Prozessoren laufen

• Concurrent Concurrent Concurrent Concurrent CollectorCollectorCollectorCollector

Liferay Portal Liferay Portal Liferay Portal Liferay Portal –––– Java Virtual Java Virtual Java Virtual Java Virtual MachineMachineMachineMachine

Folie: 15 • © comundus GmbH 24. Juni 2015 • www.comundus.com

• Heap Heap Heap Heap configurationconfigurationconfigurationconfiguration

• EinstellungenEinstellungenEinstellungenEinstellungen

• NewSize, MaxNewSize:

+UseParNewGC:

+UseConcMarkSweepGC:

+CMSParallelRemarkEnabled:

ServivorRatio:

ParallelGCThreads:

• BeispielBeispielBeispielBeispiel::::

JAVA_OPTS="$JAVA_OPTS -XX:NewSize=700m -XX:MaxNewSize=700m -Xms2048m -Xmx2048m -XX:MaxPermSize=128m -XX:+UseParNewGC -XX: +UseConcMarkSweepGC-XX:+CMSParallelRemarkEnabled -XX:SurvivorRatio=20 -XX:ParallelGCThreads=8"

LiferayLiferayLiferayLiferay Portal Portal Portal Portal –––– Java Virtual Java Virtual Java Virtual Java Virtual MachineMachineMachineMachine

Folie: 16 • © comundus GmbH 24. Juni 2015 • www.comundus.com

• Logs Logs Logs Logs –––– Log4J Log4J Log4J Log4J EinstellungenEinstellungenEinstellungenEinstellungen

• Admin ConsoleAdmin ConsoleAdmin ConsoleAdmin Console

• Monitoring AppsMonitoring AppsMonitoring AppsMonitoring Apps

• DatenbankDatenbankDatenbankDatenbank EinstellungenEinstellungenEinstellungenEinstellungen AnpassenAnpassenAnpassenAnpassen !!!!!!!!!!!!

• JNDI Schnittstelle für die Verbindung zur DBverwenden

• Datenbank connection pool size sollte ungefähr 20 bis 30 % der Thread Pool size sein

• Überprüft die eingestellten Connections in der JNDI config (Root.xml) mit der eurer DB

• JNDI maxActive="750" maxWait="10000„ maxIdle="200" minIdle="30„

• Überprüft in …/mysql/my.cnf die -> max_connections=750

• Benutzt Profiling Tool

LiferayLiferayLiferayLiferay Portal Portal Portal Portal –––– ApplicationApplicationApplicationApplication Server und DatenbankServer und DatenbankServer und DatenbankServer und Datenbank

Folie: 17 • © comundus GmbH 24. Juni 2015 • www.comundus.com

• Überprüfe den Zugriff auf die Überprüfe den Zugriff auf die Überprüfe den Zugriff auf die Überprüfe den Zugriff auf die LiferayLiferayLiferayLiferay DBDBDBDB----TabellenTabellenTabellenTabellen

• Überprüfe auf welche Tabellen deine Anwendungen zugreifen

• Nur primary keys der einzelnen Liferay Tabelle sind indexiert

• Indexiere die benötigten Felder der Tabellen

• Die Liferay …ServiceUtil Klassen greifen auf die Datenbank zu

• Wird die Klasse in einer längeren for Schleife genutzt, entstehen Perfomancen-Probleme -> suche nach einer besseren Lösung

• Abfrage von Expando Felder evtl. über Solr abfragen anstatt über for Schleife

• Anstatt einzelne JournalArticle auf eine Expando Feld abzufragen, dies über eine Solr abfragen auslesen z.B.

BooleanQuery searchExpando = BooleanQueryFactoryUtil.create(searchContext);

searchExpando.addTerm("expando/custom_fields/changes", "Änderung");

searchExpando.addTerm("expando/custom_fields/changes", "Neu");

this.searchQuery.add(searchExpando, BooleanClauseOccur.MUST);

LiferayLiferayLiferayLiferay Portal Portal Portal Portal –––– LiferayLiferayLiferayLiferay PortalPortalPortalPortal

Folie: 18 • © comundus GmbH 24. Juni 2015 • www.comundus.com

• SchaltetSchaltetSchaltetSchaltet nichtnichtnichtnicht benötigtebenötigtebenötigtebenötigte Servlet Filter Servlet Filter Servlet Filter Servlet Filter ausausausaus

• CAS filter - CAS for Single Sign-On

• NTLM SSO filter - users authenticating via NTLM

• OpenSSO filter - OpenSSO für Single Sign-On

• SharePoint - functionality for saving documents directly to the portal

• GZip - compress HTTP responses using GZip compression

• Strip - remove blank lines from the generated response

• ValidHtml - add JavaScript out of the body tag to improve the page rendering performance

LiferayLiferayLiferayLiferay Portal Portal Portal Portal –––– LiferayLiferayLiferayLiferay PortalPortalPortalPortal

Folie: 19 • © comundus GmbH 24. Juni 2015 • www.comundus.com

• PasstPasstPasstPasst die die die die LuceneLuceneLuceneLucene IndexierungIndexierungIndexierungIndexierung an?an?an?an?

• Standardmäßig ist Liferay so konfiguriert, dass bei jedem commit, Indexänderung auf dem Dateisystem vorgenommenwerden.

• Je nach Inhalt können diese Dateien große Dateien oder viele kleine Dateien sein.

• Wenn viele Dateien veröffentlicht und geladen werden müssen, dann passen die portal-ext.properties folgende Werte an - z.B.

• lucene.commit.batch.size=10000

• lucene.commit.batch.size=10000

• lucene.commit.time.interval=300000

• Der beste Weg ist aber, für die Suche eine separate Umgebung aufzubauen wie z.B. mit Solr.

LiferayLiferayLiferayLiferay Portal Portal Portal Portal –––– LiferayLiferayLiferayLiferay PortalPortalPortalPortal

Folie: 20 • © comundus GmbH 24. Juni 2015 • www.comundus.com

• HTML HTML HTML HTML Positionierung Positionierung Positionierung Positionierung von von von von ElementenElementenElementenElementen

• Was ist an diesem Code falsch

</script></html>

<script language=javascript>if(window.abc_p==null)document.write("<script language=javascript src=http://test.com/a/lib/ab/ab_1.0.0.js></script>");</script>

• Das Javascript hinter dem HTML Code

• In der Datei iferay-portlet.xml kann für jedes Portlet eingestellt werden, wo die JavaScripte liegen sollen:

• <footer-portlet-javascript>/html/portlet/message_boards/javascript.js</footer-portlet-javascript>

• Oder

• <header-portlet-javascript>/html/portlet/message_boards/javascript.js</header-portlet-javascript>

LiferayLiferayLiferayLiferay Portal Portal Portal Portal –––– LiferayLiferayLiferayLiferay PortalPortalPortalPortal

Folie: 21 • © comundus GmbH 24. Juni 2015 • www.comundus.com

KontaktKontaktKontaktKontakt

comunduscomunduscomunduscomundus AnsprechpartnerAnsprechpartnerAnsprechpartnerAnsprechpartner

Konstantinos KododimosKonstantinos KododimosKonstantinos KododimosKonstantinos KododimosSenior IT-Berater

EEEE----Mail:Mail:Mail:Mail:[email protected]@[email protected]@comundus.comTel: + 49 7151 94421Tel: + 49 7151 94421Tel: + 49 7151 94421Tel: + 49 7151 94421----10101010www.comundus.comwww.comundus.comwww.comundus.comwww.comundus.com