liferay dxp: quando le performance fanno la differenza

43
Liferay DXP: quando le performance fanno la differenza Samuele Benetti Senior System Architect Giovanni Zuliani Senior System Architect

Upload: others

Post on 30-Dec-2021

3 views

Category:

Documents


0 download

TRANSCRIPT

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

FOCUS

#LRBC19 @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.

ELEMENTI DA VALUTARE

#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.

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: CDN

@ben_samuele - @gzu1066

#LRBC19

ARCHITETTURA: CDN● cdn.host.http=cdn-liferay.smc.it

@ben_samuele - @gzu1066

#LRBC19

ARCHITETTURA: Container

● Ci siamo!

● Modalità di gestione

● Il monitoraggio delle risorse

● Il monitoraggio delle applicazioni

@ben_samuele - @gzu1066

STRUMENTI DI MONITORAGGIO

#LRBC19

STRUMENTI DI MONITORAGGIO

● Open Source:ZabbixJconsoleJvisualvmJMCGoAccessPinpoint

● Enterprise:DynatraceAppDynamicsWily

@ben_samuele - @gzu1066

#LRBC19

STRUMENTI DI MONITORAGGIO: Zabbix

@ben_samuele - @gzu1066

#LRBC19

STRUMENTI DI MONITORAGGIO: JConsole

@ben_samuele - @gzu1066

#LRBC19

STRUMENTI DI MONITORAGGIO: JVisualvm

@ben_samuele - @gzu1066

#LRBC19

STRUMENTI DI MONITORAGGIO: jmc

@ben_samuele - @gzu1066

#LRBC19

STRUMENTI DI MONITORAGGIO: GoAccess

@ben_samuele - @gzu1066

#LRBC19

STRUMENTI DI MONITORAGGIO: atop

@ben_samuele - @gzu1066

#LRBC19

STRUMENTI DI MONITORAGGIO: htop

@ben_samuele - @gzu1066

TUNING

#LRBC19

TUNING

● Quale influenza hanno i differenti stack sulle performance

● Stress test

● Crash test

● Performance test

@ben_samuele - @gzu1066

CASE E DISCUSSIONE TECNICA

#LRBC19

Domande

CONTATTI Samuele BenettiEmail [email protected] 348 8700019Phone

CONTATTI Giovanni ZulianiEmail [email protected] smctv.giovanni.zulianiGitHubMobile 348 3711436Phone

@ben_samuele - @gzu1066

Grazie!