Bologna 26/27 Novembre 2010Novotel fiera Bologna
Spingere al massimo le prestazioni di TYPO3Relatore: Mauro Lorenzutti
T3Camp ItaliaIl primo evento italiano dedicato a TYPO3
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
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
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
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…
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
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 ;-)?
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
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
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
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
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
� ...
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
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
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
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
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
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
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
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
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%
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
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
Pag. 24 http://www.t3campitalia.it/Pag. 24
L’admin panel
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
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
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
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
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!
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
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
� …
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
� …
Pag. 33 http://www.t3campitalia.it/Pag. 33
Situazione iniziale
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
Pag. 35 http://www.t3campitalia.it/Pag. 35
Post-ottimizzazione
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
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
☺☺☺
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
Pag. 39 http://www.t3campitalia.it/Pag. 39
Sponsor
Pag. 40 http://www.t3campitalia.it/Pag. 40
Q&A
Grazie per la vostra attenzione
Q & A
www.webformat.com