1. Spingere al
massimo le
prestazioni di
TYPO3
Relatore: Mauro Lorenzutti
T3Camp Italia Bologna 26/27 Novembre 2010
Il primo evento italiano dedicato a TYPO3 Novotel fiera Bologna
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:
mauro.lorenzutti@webformat.com
www.webformat.com
Pag. 2 http://www.t3campitalia.it/
3. Questo talk non parla di…
Ottimizzazione lato server
Load Bilancing
Clustering
Ecc.
Configurazioni di
Apache
PHP
MySQL
Pag. 3 http://www.t3campitalia.it/
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. 4 http://www.t3campitalia.it/
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. 5 http://www.t3campitalia.it/
6. TYPO3 vs Drupal vs Joomla
http://blogs.helion-prime.com/2008/05/19/typo3-joomla-and-drupal-cmss-
performance-testing.html
Pag. 6 http://www.t3campitalia.it/
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. 7 http://www.t3campitalia.it/
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. 8 http://www.t3campitalia.it/
9. Scaletta
Introduzione
I 4 livelli di caching di TYPO3
Comparazione prestazioni
Il nuovo framework di caching
Ottimizzare le prestazioni – oltre TYPO3
Conclusioni
Pag. 9 http://www.t3campitalia.it/
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. 10 http://www.t3campitalia.it/
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. 11 http://www.t3campitalia.it/
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. 12 http://www.t3campitalia.it/
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. 13 http://www.t3campitalia.it/
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. 14 http://www.t3campitalia.it/
15. Scaletta
Introduzione
I 4 livelli di caching di TYPO3
Comparazione prestazioni
Il nuovo framework di caching
Ottimizzare le prestazioni – oltre TYPO3
Conclusioni
Pag. 15 http://www.t3campitalia.it/
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. 16 http://www.t3campitalia.it/
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. 17 http://www.t3campitalia.it/
18. Tempo richiesto per il test
450
400
350
300
250
Secondi
PHP
eAccelerator
200
150
100
50
0
No cache Parziale DB Fisica
Pag. 18 http://www.t3campitalia.it/
19. Richieste per secondo
10000
1000
Secondi
PHP
100 eAccelerator
10
1
No cache Parziale DB Fisica
Pag. 19 http://www.t3campitalia.it/
20. Utilizzo della CPU
80%
70%
60%
50%
PHP
40% eAccelerator
30%
20%
10%
0%
No cache Parziale DB Fisica
Pag. 20 http://www.t3campitalia.it/
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. 21 http://www.t3campitalia.it/
22. TYPO3 4.2 vs TYPO3 4.4
500
450
400
350
300
4.2
secondi
250 4.4
200
150
100
50
0
No cache Parziale DB Fisica
Pag. 22 http://www.t3campitalia.it/
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. 23 http://www.t3campitalia.it/
25. Scaletta
Introduzione
I 4 livelli di caching di TYPO3
Comparazione prestazioni
Il nuovo framework di caching
Ottimizzare le prestazioni – oltre TYPO3
Conclusioni
Pag. 25 http://www.t3campitalia.it/
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. 26 http://www.t3campitalia.it/
28. Old vs New
caching framework
300
250
200
Secondi
Old
150 New
100
50
0
No cache Parziale DB Fisica
Pag. 28 http://www.t3campitalia.it/
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. 29 http://www.t3campitalia.it/
30. Scaletta
Introduzione
I 4 livelli di caching di TYPO3
Comparazione prestazioni
Il nuovo framework di caching
Ottimizzare le prestazioni – oltre TYPO3
Conclusioni
Pag. 30 http://www.t3campitalia.it/
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. 31 http://www.t3campitalia.it/
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. 32 http://www.t3campitalia.it/
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. 34 http://www.t3campitalia.it/
36. Scaletta
Introduzione
I 4 livelli di caching di TYPO3
Comparazione prestazioni
Il nuovo framework di caching
Ottimizzare le prestazioni – oltre TYPO3
Conclusioni
Pag. 36 http://www.t3campitalia.it/
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. 37 http://www.t3campitalia.it/
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. 38 http://www.t3campitalia.it/