typo3 prestazioni

40
Bologna 26/27 Novembre 2010 Novotel fiera Bologna Spingere al massimo le prestazioni di TYPO3 Relatore: Mauro Lorenzutti T3Camp Italia Il primo evento italiano dedicato a TYPO3

Upload: mauro-lorenzutti

Post on 19-May-2015

1.572 views

Category:

Technology


1 download

DESCRIPTION

Le slide della presentazione tenuta al T3Camp Italia su come ottimizzare le prestazioni di TYPO3

TRANSCRIPT

Page 1: Typo3 prestazioni

Bologna 26/27 Novembre 2010Novotel fiera Bologna

Spingere al massimo le prestazioni di TYPO3Relatore: Mauro Lorenzutti

T3Camp ItaliaIl primo evento italiano dedicato a TYPO3

Page 2: Typo3 prestazioni

Pag. 2 http://www.t3campitalia.it/Pag. 2

Mauro Lorenzutti

� CTO di Webformat

� Sviluppatore e consulente TYPO3 dal 2004

� TYPO3 Certified Integrator dal 2009

� Sviluppatore di numerose estensioni, tra cui:

� DB Integration (wfqbe)

� Webformat Shop System (extendedshop)

� TYPO3-Alfresco Connector (alfresco)

� Contacts:� [email protected]

� www.webformat.com

Page 3: Typo3 prestazioni

Pag. 3 http://www.t3campitalia.it/Pag. 3

Questo talk non parla di…

� Ottimizzazione lato server

� Load Bilancing

� Clustering

� Ecc.

� Configurazioni di

� Apache

� PHP

� MySQL

Page 4: Typo3 prestazioni

Pag. 4 http://www.t3campitalia.it/Pag. 4

Ma parleremo di…

� Introduzione

� I 4 livelli di caching di TYPO3

� Comparazione prestazioni

� Il nuovo framework di caching

� Ottimizzare le prestazioni – oltre TYPO3

� Conclusioni

Page 5: Typo3 prestazioni

Pag. 5 http://www.t3campitalia.it/Pag. 5

Mai sentito dire?

� Devo scegliere un CMS ma ho sentito che TYPO3 è lento e pesante

� Ho visto delle comparazioni di prestazioni tra TYPO3, Drupal, Joomla, Wordpress ecc. e TYPO3 ne usciva male

� Ho un sito con migliaia di pagine e milioni di visitatori al mese, non credo che un CMS open-source possa reggere…

Page 6: Typo3 prestazioni

Pag. 6 http://www.t3campitalia.it/Pag. 6

TYPO3 vs Drupal vs Joomla

� http://blogs.helion-prime.com/2008/05/19/typo3-joomla-and-drupal-cmss-performance-testing.html

Page 7: Typo3 prestazioni

Pag. 7 http://www.t3campitalia.it/Pag. 7

Considerazioni

� Sorvoliamo sull'opportunità di confrontare TYPO3 con Wordpress e Joomla…

� Il test di prestazioni è stato svolto con il motore di caching disabilitato

Caching functionally:

turned off for Drupal, Joomla!, and Typo3;

� Quando scegliete un auto, è più importante quanti km/h riuscite a fare in prima marcia, oppure quanto comodamente viaggiate alla velocità massima (consentita, ovviamente ;-)?

Page 8: Typo3 prestazioni

Pag. 8 http://www.t3campitalia.it/Pag. 8

Cache si / cache no

� Il modulo di caching è fondamentale in un CMS

� Il confronto delle prestazioni di due CMS non può essere fatto con i moduli di cache disabilitati

� Vediamo quindi come sfruttare al meglio la cache di TYPO3

Page 9: Typo3 prestazioni

Pag. 9 http://www.t3campitalia.it/Pag. 9

Scaletta

� Introduzione

� I 4 livelli di caching di TYPO3

� Comparazione prestazioni

� Il nuovo framework di caching

� Ottimizzare le prestazioni – oltre TYPO3

� Conclusioni

Page 10: Typo3 prestazioni

Pag. 10 http://www.t3campitalia.it/Pag. 10

I 4 livelli di caching

� Possiamo individuare 4 diversi livelli di caching in TYPO3, tre nativi del CMS:

� Cache disattiva…

� Cache parziale su DB

� Cache totale su DB

� Ed uno ottenibile mediante moduli aggiuntivi:

� Cache su file fisico

Page 11: Typo3 prestazioni

Pag. 11 http://www.t3campitalia.it/Pag. 11

Cache disattiva

� Ogni richiesta della pagina viene servita da TYPO3 costruendo l’output da zero

� Non ci sono ottimizzazioni

� Anche se la pagina non cambia nel tempo, TYPO3 la rigenera ad ogni richiesta

� Quando viene disattivata la cache:

� index.php?id=123&no_cache=1

� config.no_cache = 1

� Opzione “no cache” nelle proprietà della pagina

Page 12: Typo3 prestazioni

Pag. 12 http://www.t3campitalia.it/Pag. 12

Cache parziale su DB

� TYPO3 genera una cache parziale della pagina e la salva su DB

� Alle prossime richieste verrà restituita la pagina presa dalla cache e verranno generati ex-novo solo i contenuti di tipo USER_INT

� Utile per quei contenuti che non possono essere messi in cache:

� Carrello elettronico

� Ricerca

� Visualizzazione di dati in tempo reale

� Form di inserimento dati

� ...

Page 13: Typo3 prestazioni

Pag. 13 http://www.t3campitalia.it/Pag. 13

Cache totale su DB

� Tutti i contenuti della pagina possono essere messi in cache (USER)

� TYPO3 genera la pagina e la salva su DB

� Alla prossima richiesta, TYPO3 restituisce la pagina presente in cache

� Nessun'altra operazione è necessaria

� Il parametro cHash serve a distinguere versioni diverse della stessa pagina messa in cache

� cHash=115850ad73f8db47fb263a56614f68bc

Page 14: Typo3 prestazioni

Pag. 14 http://www.t3campitalia.it/Pag. 14

Cache su file fisico

� E se invece di salvare la pagina su DB la scriviamo direttamente su file?

� Alla prima richiesta TYPO3 genera la pagina e scrive un file HTML su disco

� Le prossime richieste vengono gestite da Apache senza istanziare TYPO3 né PHP

� Richiede mod_rewrite

� Meglio se con realurl

� Solo per contenuti USER

� Solo per pagine che possono essere messe completamente in cache

Page 15: Typo3 prestazioni

Pag. 15 http://www.t3campitalia.it/Pag. 15

Scaletta

� Introduzione

� I 4 livelli di caching di TYPO3

� Comparazione prestazioni

� Il nuovo framework di caching

� Ottimizzare le prestazioni – oltre TYPO3

� Conclusioni

Page 16: Typo3 prestazioni

Pag. 16 http://www.t3campitalia.it/Pag. 16

Test di prestazioni

� Quanto è importante sfruttare al meglio la cache di TYPO3?

� Facciamo un test!

� Apache Benchmark:

ab -c 10 -n 1000 http://www.test.it/news.html

ATTENZIONE: questo test ha il solo scopo di dimostrare come un uso corretto della cache permetta di ottenere miglioramenti importanti nelle prestazioni, i risultati dei test che seguono devono essere considerati come un riferimento / ordine di grandezza

Page 17: Typo3 prestazioni

Pag. 17 http://www.t3campitalia.it/Pag. 17

L'ambiente del test

� Macchina virtuale VmWare

� CPU: 1GHz

� RAM: 512GB

� Sistema operativo: GNU Linux / Ubuntu

� Apache 2.2.14

� Mysql 5.1.41

� PHP 5.3.2

� TYPO3 4.4.4

� tt_news 3.0.1

Page 18: Typo3 prestazioni

Pag. 18 http://www.t3campitalia.it/Pag. 18

Tempo richiesto per il test

0

50

100

150

200

250

300

350

400

450

No cache Parziale DB Fisica

Sec

on

di

PHP

eAccelerator

Page 19: Typo3 prestazioni

Pag. 19 http://www.t3campitalia.it/Pag. 19

Richieste per secondo

1

10

100

1000

10000

No cache Parziale DB Fisica

Sec

on

di

PHP

eAccelerator

Page 20: Typo3 prestazioni

Pag. 20 http://www.t3campitalia.it/Pag. 20

Utilizzo della CPU

0%

10%

20%

30%

40%

50%

60%

70%

80%

No cache Parziale DB Fisica

PHP

eAccelerator

Page 21: Typo3 prestazioni

Pag. 21 http://www.t3campitalia.it/Pag. 21

Risultati

� Possiamo notare che le prestazioni variano in media come segue (e senza acceleratore PHP i risultati sono ancora più clamorosi):

� Passare da no_cache a cache parziale su DB: +275%

� Passare da cache parziale a cache totale su DB: +400%

� Passare da cache totale su DB a cache su file fisico: +300%

� Passare da no_cache a cache su file fisico: +3300%

� L’uso di un acceleratore PHP consente di:

� Aumentare il numero di pagine servite al secondo tra l’80% e il 300%

� Diminuire il consumo di CPU tra il 15% e il 50%

Page 22: Typo3 prestazioni

Pag. 22 http://www.t3campitalia.it/Pag. 22

TYPO3 4.2 vs TYPO3 4.4

0

50

100

150

200

250

300

350

400

450

500

No cache Parziale DB Fisica

seco

nd

i 4.2

4.4

Page 23: Typo3 prestazioni

Pag. 23 http://www.t3campitalia.it/Pag. 23

La cache è importante!

� Il tuning delle performance deve necessariamente partire da:

� Sostituire le estensioni USER_INT con estensioni USER

� Ottimizzare il codice delle estensioni USER_INT

� Ottimizzare il codice delle estensioni USER per le pagine la cui cache viene aggiornata molte volte

� Attivare la cache su file fisico

� L’admin panel è vostro amico! Vi consente di:

� Analizzare tutte le query

� Valutare i tempi di esecuzione

� Trovare i colli di bottiglia (o perlomeno di isolare il codice responsabile…)

� Config.admPanel = 1

Page 24: Typo3 prestazioni

Pag. 24 http://www.t3campitalia.it/Pag. 24

L’admin panel

Page 25: Typo3 prestazioni

Pag. 25 http://www.t3campitalia.it/Pag. 25

Scaletta

� Introduzione

� I 4 livelli di caching di TYPO3

� Comparazione prestazioni

� Il nuovo framework di caching

� Ottimizzare le prestazioni – oltre TYPO3

� Conclusioni

Page 26: Typo3 prestazioni

Pag. 26 http://www.t3campitalia.it/Pag. 26

Il nuovo caching framework

� Dalla versione 4.3 è disponibile un nuovo caching framework che è stato importato dal FLOW3

� Fornisce metodi alternativi per il salvataggio dei dati di cache (es. database, file system, memcached) – nuovi metodi possono essere implementati per fornire storage diversi in maniera trasparente a TYPO3 e alle sue estensioni

� Gli elementi messi in cache possono essere taggati per consentire una più granulare gestione della cache

� Il nuovo caching framework consente di introdurre meccanismi di cache anche nelle estensioni USER_INT e in applicazioni custom

Page 27: Typo3 prestazioni

Pag. 27

Memcached

$TYPO3_CONF_VARS['SYS']['useCachingFramework'] = '1';

$TYPO3_CONF_VARS['SYS']['caching']['cacheConfigurations'] = array (

'cache_hash' => array(

'frontend' => 't3lib_cache_frontend_VariableFrontend',

'backend' => 't3lib_cache_backend_MemcachedBackend',

'options' => array(

'servers' => array('localhost:11211'),

)

),

'cache_pages' => array(

'frontend' => 't3lib_cache_frontend_VariableFrontend',

'backend' => 't3lib_cache_backend_MemcachedBackend',

'options' => array(

'servers' => array('localhost:11211'),

)

),

'cache_pagesection' => array(

'frontend' => 't3lib_cache_frontend_VariableFrontend',

'backend' => 't3lib_cache_backend_MemcachedBackend',

'options' => array(

'servers' => array('localhost:11211'),

)

),

);

http://www.t3campitalia.it/Pag. 27

Page 28: Typo3 prestazioni

Pag. 28 http://www.t3campitalia.it/Pag. 28

Old vs New caching framework

0

50

100

150

200

250

300

No cache Parziale DB Fisica

Sec

on

di

Old

New

Page 29: Typo3 prestazioni

Pag. 29 http://www.t3campitalia.it/Pag. 29

Considerazioni

� Il nuovo caching framework non si è rivelato più performante del precedente, come mai? Ipotizzo:

� Nuovo framework, necessità di tempo per essere ottimizzato

� E’ un backporting da FLOW3, non è stato progettato per la versione 4 di TYPO3

� L’ambiente di test non era adeguato / ottimizzato per memcached

� Le differenze sono minime e potrebbero dipendere da variabili esterne che hanno interferito col test

� tt_news non sfrutta ancora a pieno le funzionalità del nuovo motore di caching

� La cache su file fisico è comunque la soluzione migliore!

Page 30: Typo3 prestazioni

Pag. 30 http://www.t3campitalia.it/Pag. 30

Scaletta

� Introduzione

� I 4 livelli di caching di TYPO3

� Comparazione prestazioni

� Il nuovo framework di caching

� Ottimizzare le prestazioni – oltre TYPO3

� Conclusioni

Page 31: Typo3 prestazioni

Pag. 31 http://www.t3campitalia.it/Pag. 31

Il server

� Ottimizzare TYPO3 può non bastare per raggiungere prestazioni super!

� Bisogna prestare attenzione anche a:

� Load bilancing

� Clustering MySQL

� Configurazione di Apache

� Ottimizzazione di PHP

� Creazione di indici in MySQL

� …

Page 32: Typo3 prestazioni

Pag. 32 http://www.t3campitalia.it/Pag. 32

La banda

� Oltre al tempo necessario al server per generare una pagina web, dobbiamo considerare anche il tempo necessario per scaricare:

� Codice HTML

� Immagini

� CSS

� Javascript

� …

Page 33: Typo3 prestazioni

Pag. 33 http://www.t3campitalia.it/Pag. 33

Situazione iniziale

Page 34: Typo3 prestazioni

Pag. 34 http://www.t3campitalia.it/Pag. 34

2 estensioni utili

� Source Optimization (sourceopt):

� Pulizia del codice XHTML

� Rimozione di righe vuote

� Spostamento di codice CSS inline in file esterni

� Rimozione dei commenti

� Javascript and CSS optimizer (js_css_optimizer)

� Compressione di codice Javascript

� Compressione di codice CSS

� Generazione di un singolo file JS a partire da file multipli

� Generazione di un singolo file CSS a partire da file multipli

� P.S. Ci sono altre estensioni simili nel repository

Page 35: Typo3 prestazioni

Pag. 35 http://www.t3campitalia.it/Pag. 35

Post-ottimizzazione

Page 36: Typo3 prestazioni

Pag. 36 http://www.t3campitalia.it/Pag. 36

Scaletta

� Introduzione

� I 4 livelli di caching di TYPO3

� Comparazione prestazioni

� Il nuovo framework di caching

� Ottimizzare le prestazioni – oltre TYPO3

� Conclusioni

Page 37: Typo3 prestazioni

Pag. 37 http://www.t3campitalia.it/Pag. 37

TYPO3 è veloce?

� Se configurato bene, si!

� Cache su file fisico e ottimizzazione di CSS/JS permettono di risparmiare su hardware e banda

� Se servono oggetti USER_INT è importante ottimizzarne il codice

� L’uso corretto della cache consente di abbattere i requisiti hardware di TYPO3 e di conseguenza l’acquisto di materiale e il consumo di risorse

Salvaguarda l’ambiente:configura correttamente la cache di TYPO3

☺☺☺

Page 38: Typo3 prestazioni

Pag. 38 http://www.t3campitalia.it/Pag. 38

Google, sempre lui...

� Le prestazioni sono importanti anche per Google!

� http://googlewebmastercentral.blogspot.com/2010/04/using-site-speed-in-web-search-ranking.html

Page 39: Typo3 prestazioni

Pag. 39 http://www.t3campitalia.it/Pag. 39

Sponsor

Page 40: Typo3 prestazioni

Pag. 40 http://www.t3campitalia.it/Pag. 40

Q&A

Grazie per la vostra attenzione

Q & A

[email protected]

www.webformat.com