Liferay DXP: quando le performance
fanno la differenza
Samuele BenettiSenior System Architect
Giovanni ZulianiSenior System Architect
#LRBC19
Liferay DXP: quando le performance fanno la differenza
● Focus
● Elementi da valutare
● Architettura
● Strumenti di monitoraggio
● Tuning
● Case e discussione tecnica
@ben_samuele - @gzu1066
#LRBC19
PERFORMANCE
@ben_samuele - @gzu1066
La performance di un computer (in inglese computer performance, prestazioni del computer) è la quantità di lavoro utile prodotto da un computer in relazione al tempo e alle risorse disponibili.A seconda del contesto, una buona performance è data da uno o più dei seguenti parametri:● Tempo impiegato a terminare un lavoro● Throughput di dati● Basso utilizzo di risorse computazionali● Basso consumo energetico● Disponibilità di elaborazioneSulle prestazioni del computer incidono sia le periferiche hardware che la qualità del software. Le prime forniscono la potenza di calcolo pura, il secondo ha il compito di completare un lavoro con la massima efficienza.In termini quantitativi, la performance di un computer può essere valutata con varie misurazioni, come ad esempio latenza, larghezza di banda, tempo di risposta, tempo di completamento ecc. Esistono diversi metodi di misurazione nei vari contesti e vengono definiti benchmark (dall'inglese punto di riferimento).Vi sono benchmark specifici per la valutazione delle performance specifiche e altri benchmark, detti benchmark sintetici, che restituiscono un punteggio derivato dalla somma di vari test specifici. La veridicità di questi test è fonte di discussioni e dibattiti, ed è in generale ritenuta poco affidabile per l'elevata variabilità dei contesti in cui viene utilizzato un computer.
#LRBC19
PERFORMANCE: metodologia
@ben_samuele - @gzu1066
● … per non parlare di performance● … per evitare di rivedere l’architettura● … mettere a budget il necessario● … dare in anticipo risposte al business
Significa: ● pianificare gli step necessari all’implementazione ● pianificare uno stress test ● pianificare un assessment● studiare il golive.
#LRBC19
PERFORMANCE: progettazione architettura
@ben_samuele - @gzu1066
● Disegno di architettura
● Rispetto delle best practices di installazione
● Rispetto delle best practices dei sistemi operativi e delle
networking
● Non lasciare nessuna configurazione dubbia
#LRBC19
PERFORMANCE: Stress Test
@ben_samuele - @gzu1066
Crash Test:
aumento smisurato degli accessi per misurare quando viene generato un down. Permette di
valutare come si comporta il sistema (pagine di cortesia, perdita di dati, migrazioni di sessioni,
ecc…).
Performance Test:
aumento degli accessi per valutare la risposta del
sistema secondo le aspettative. Vengono fatte delle
valutazioni sulle risposte delle pagine e sul carico
sistemi, al crescere degli utenti contemporanei.
#LRBC19
PERFORMANCE: container
@ben_samuele - @gzu1066
PRO
● Startup
● Performance migliori
● Scalabilità
CONTRO
#LRBC19
PERFORMANCE: container
@ben_samuele - @gzu1066
PRO
● Startup
● Performance migliori
● Scalabilità
CONTRO
● Startup
● Performance peggiori
● Scalabilità
#LRBC19
PERFORMANCE: ARCHITETTURA
@ben_samuele - @gzu1066
● Importanza di un tuning o assessment delle varie componenti o ruoli di architettura.
#LRBC19
ARCHITETTURA
● Web Server
● Application Server
● Elasticsearch
● Database
● File System
● CDN
@ben_samuele - @gzu1066
#LRBC19
ARCHITETTURA: Web Server
● Worker o prefork
● Configurazione e logformat
● Compressione contenuti statici
● Timeout
● Ulimit
@ben_samuele - @gzu1066
#LRBC19
ARCHITETTURA: Web Server
● MPM WorkerVengono creati vari processi figli di Apache, ognuno dei quali può contenere più thread, che a loro volta possono servire più connessioni. Questa modalità di esecuzione utilizza un quantitativo modesto di memoria. La modalità MPM Worker, in virtù dell’utilizzo dei threadmultipli, è adatta a sistemi multiprocessore.
● MPM PreforkVengono creati vari processi figli di Apache, ognuno dei quali può contenere un solo thread, che a sua volta può servire una sola connessione. MPM Prefork utilizza più memoria rispetto al modulo MPM Worker. MPM Prefork in virtù dell’utilizzo di thread singoli, è più adatto a sistemi a processore singolo.
@ben_samuele - @gzu1066
#LRBC19
ARCHITETTURA: Web Server
● Definire il numero di connessioni gestite in base a:
Caratteristiche del server (CPU – RAM)
Caratteristiche portale (sito istituzione, e-commerce, con o senza login, ecc.)
Connessioni desiderate dal business
● Configurare formato di log per avere maggiori informazioni sulle richieste
Es: LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" \"%v
\"%{JSESSIONID}C\" \" %I %O
● mod_log_forensic: permette di avere i log delle richieste effettuate e non ancora evase
@ben_samuele - @gzu1066
#LRBC19
ARCHITETTURA: Web Server
● Compressione - Deflate
Far gestire la compressione dei contenuti statici al Web Server invece che
all’Application Server per ottimizzare i tempi di evasione e l’impegno dei server
● Ulimit
Definire in modo opportuno i valori di ulimit del sistema operativo per evitare problemi
di saturazione risorse
● Timeout
@ben_samuele - @gzu1066
#LRBC19
ARCHITETTURA: Application Server
● Configurazioni S.O.
● Configurazioni JVM
● Servlet Container (Apache-Tomcat, Jboss, Weblogic, Websphere)
● Liferay
@ben_samuele - @gzu1066
#LRBC19
ARCHITETTURA: Application Server - Configurazioni S.O.● Ulimit
Impostare adeguatamente i valori di ulimit per evitare saturazioni con conseguente blocco:- Open Files- Process
● Swappeness o Swap?● Selinux
Dove non necessario Selinux è bene disabilitarlo. Se necessario va gestito in modo opportuno per evitare problemi di connessione e fruizione di servizi esterni
● Firewall● File System
noatime, nodiratimeext4 – xfs - LVM
@ben_samuele - @gzu1066
#LRBC19
ARCHITETTURA: Application Server
● Heap
Dimensionamento che va calibrato in base all’uso che ne fa il portale
● Metaspace
Il valore di default è unlimited, opzionale -XX:MaxMetaspaceSize=XXXXm
● Code Cache
● GC
G1 GC or CMS GC ? (-XX:+UseG1GC vs -XX:+UseConcMarkSweepGC)
Abilitazione tuning: -verbose:gc e -XX:+PrintGCDetails
● JDK 11, quali novità.
@ben_samuele - @gzu1066
#LRBC19
ARCHITETTURA: Application Server – Servlet Container
● Numero Connessioni
Configurazione del numero di connessioni che possono essere gestite
● Timeout
Gestione timeout per chiamate a applicazioni/servizi
● Configurazione LogFormat per tuning:
ES. "%h %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-Agent}i\" \"%v
'%{JSESSIONID}c' \" %I %Dms“
@ben_samuele - @gzu1066
#LRBC19
ARCHITETTURA: Application Server
● Disabilitazione Filtricom.liferay.portal.servlet.filters.sso.cas.CASFilter=falsecom.liferay.portal.servlet.filters.sso.ntlm.NtlmFilter=falsecom.liferay.portal.servlet.filters.sso.ntlm.NtlmPostFilter=falsecom.liferay.portal.servlet.filters.sso.opensso.OpenSSOFilter=falsecom.liferay.portal.sharepoint.SharepointFilter=falsecom.liferay.portal.servlet.filters.gzip.GZipFilter=falsecom.liferay.portal.servlet.filters.strip.StripFilter=false
● Connection Pool DB● Cluster
@ben_samuele - @gzu1066
#LRBC19
ARCHITETTURA: Elasticsearch
● Configurazione JVM
50% del SO; <32GB
● Standalone o Cluster?
Che architettura usare
Quando è opportuno avere un cluster
● Tipologia nodi
Master - Client – Data - Quorum
● Sharding e Replica
@ben_samuele - @gzu1066
#LRBC19
ARCHITETTURA: Database
● Connection pool
Configurare le connection pool in sintonia con le configurazioni Liferay
● Configurazioni DB
Il Database deve essere configurato in modo da sopportare il flusso di richieste del
portale e di tenere in cache i dati (va dimensionato opportunamente)
● HA
Il Database è un SPOF dell’architettura e va quindi presa in considerazione la creazione
di un cluster che permette una distribuzione del carico con benefici anche in termini di
performance.
@ben_samuele - @gzu1066
QUI PUOI INSERIRE UN’ IMMAGINE …COME DA ESEMPIO
ARCHITETTURA: CDN Content Delivery Network
● Cosa è una CDN
● Quali sono i vantaggi
● Quando è utile attivarla
● Quali modalità e software usare
● Come si attiva in Liferay
#LRBC19
ARCHITETTURA: Container
● Ci siamo!
● Modalità di gestione
● Il monitoraggio delle risorse
● Il monitoraggio delle applicazioni
@ben_samuele - @gzu1066
#LRBC19
STRUMENTI DI MONITORAGGIO
● Open Source:ZabbixJconsoleJvisualvmJMCGoAccessPinpoint
● Enterprise:DynatraceAppDynamicsWily
@ben_samuele - @gzu1066
#LRBC19
TUNING
● Quale influenza hanno i differenti stack sulle performance
● Stress test
● Crash test
● Performance test
@ben_samuele - @gzu1066
#LRBC19
Domande
CONTATTI Samuele BenettiEmail [email protected] 348 8700019Phone
CONTATTI Giovanni ZulianiEmail [email protected] smctv.giovanni.zulianiGitHubMobile 348 3711436Phone
@ben_samuele - @gzu1066