2. CHI SONO
Gianluca Strafella
Sviluppatore TYPO3 nel team di Webformat
Sviluppatore Magento nel team di Webformat
Contatti
gianluca.strafella@webformat.com
www.webformat.com
3. DI COSA PARLEREMO
Caching in TYPO3
Altri sistemi di cache
Memcache
Redis
Varnish
Banchmarking dei vari sistemi e comparazione
Quale sistema scegliere ?
4. CHE COSA VIENE MESSO IN CACHE ?
Cache in TYPO3
cache_core
autoloader, ext_tables.php, ext_localconf.php (typo3temp/Cache/Code/cache_code)
cache_hash
risultati di alcune funzioni TYPO3 (p.e. substituteMarkerArrayCached), usata durante il processo
di rendering della pagina
cache_pagesection
sezioni della pagina, template TYPOSCRIPT di cui è già stato fatto il parsing
contenuto compresso
cache_pages
questa cache deposita le pagine
cache_phpcode
non usata dalla versione 6.0
cache_runtime
dati specifici della request corrente
cache_rootline
cache dedicata al core
5. CACHING TYPO3
La “classica” cache
Entry identificate univocamente e da tags
Identificatore basato anche su pageUid, utente loggato
o non loggato
Il core definisce e usa diversi framework per la cache
Due interfacce di programmazione:
Frontend cache
Backend cache
7. MEMCACHE
Sistema di caching distribuito
Memorizzazione in RAM entry come chiave->valore
(“slab” e “chuncks” )
I valori sono stringhe
Può contenere risultati provenienti dal database, chiamate
API, pagine web
Interfaccia API disponibile in molti linguaggi
(C, PHP, Java, Python, …)
Free e OpenSource
In TYPO3
Backend Cache integrata nativamente con il core
Nelle chiavi include la costante PATH_site per evitare conflitti su
installazioni TYPO3 differenti
8. REDIS
Caching chiave-valore
Valori semplici o strutturati
(strings, hashes, lists, sets and sorted sets)
Persistenza in RAM
Un'istanza REDIS può lavorare su cache multiple
senza perdita di performance nel caso di flush della
cache.
Sistema di replicazione master-slave
Licenza BSD
In TYPO3
Backend Cache integrato nativamente con il core
9. VARNISH
HTTP Accellerator (anche conosciuto come Caching
Reverse Proxy)
Supporta Load balancer,Failover System
Deposita le risposte su RAM o su DISCO
Ogni connessione di un client viene gestita da un thread
separato o coda
VCL (Varnish Configuration Language) tradotto in codice
C per gestire le richieste/risposte
Supporta ESI (Edge Side Includes) per elementi in
pagina da non cachare
Open source
In TYPO3
Backend Cache integrato tramite estensioni (moc_varnish,
etc…)
10. IL BENCHMARKING
Introduction package (TYPO3 6.1.7)
Home page
No USER_INT, pagina messa in cache interamente
Pagine interne
No USER_INT objects, pagina messa in cache interamente
Server
Intel® Core™ i5-2430M CPU @ 2.40GHz
Memoria RAM 4 GB
SO: Ubuntu Release 12.04 (precise) 32-bit
Kernel Linux 3.2.0-59-generic-pae
Banchmarking tools
ab
11. LE PROVE FATTE
Sulla home page
Richieste 10
Richieste 10, Concorrenza 2
Richieste 1000, Concorrenza 10
Richieste 1000, Concorrenza 100
Richieste 2000, Concorrenza 1000
Sulle pagine interne (media)
examples/text-and-images/
examples/news/
12. COSA È STATO MISURATO
Numero di richieste per secondo (#/s)
Tempo medio di completamento richiesta (ms)
No concorrenza: tempo medio necessario per eseguire
la richiesta (1 alla volta)
In Concorrenza:
uso della stessa risorsa contemporaneamente
Tempo medio di attesa (ms)
Tempo impiegato per stabilire la connessione al server e
ottenere i primi bit di risposta
13. NUMERO DI RICHIESTE PER SECONDO
HOME PAGE
3.050
4.310
6.420
1737.620
7.630
7.940
13.230
3070.310
7,040
8.980
8.020
2308.840
5.490
8.360
7.770
2073.430
1484.650
TYPO3
MEMCACHED
REDIS
VARNISH
Richieste 2000, Concorrenza 1000
Richieste 1000, Concorrenza 100
Richieste 1000, Concorrenza 10
Richieste 10 Concorrenza 1
Richieste 10 Concorrenza 2
14. NUMERO DI RICHIESTE PER SECONDO (HOME
PAGE)
7.630
7.940
13.230
3070.310
TYPO3
MEMCACHED
REDIS
VARNISH
Richieste 2000, Concorrenza 1000
Richieste 1000, Concorrenza 100
Richieste 1000, Concorrenza 10
Richieste 10 Concorrenza 1
Richieste 10 Concorrenza 2
No concorrenza
15. NUMERO DI RICHIESTE PER SECONDO (HOME
PAGE)
7.040
8.980
8,020
2308.840
TYPO3
MEMCACHED
REDIS
VARNISH
Richieste 2000, Concorrenza 1000
Richieste 1000, Concorrenza 100
Richieste 1000, Concorrenza 10
Richieste 10 Concorrenza 1
Richieste 10 Concorrenza 2
32. PRO E CONTRO
VARNISH
• Configurazione apache, virtual host, VCL
• Esclusione rami o pagine non in cache Cookies
• Edge Side Includes
• Complessità della pagine (elementi in cache VS elementi che non vanno in
cache)
MEMCACHE
• In caso di Out of memory :“Eviction” -> getta via alcune entry dalla cache
• Se i dati vengono condivisi su più memcache server e qualche server va giù, le
coppie chiave/valore su questo sistema vengono perse
-> CORRUZIONE DELLA CACHE -> costante monitoraggio
REDIS
• Supera i problemi infrastrutturali di Memcache
• Può essere usato come alternativa al database backend per grandi tabelle di
cache.
• Notoriamente richieste più memoria -> costante monitoraggio
33. E TYPO3 ?
Si difende bene nei confronti di memcache, redis
finchè il sito è semplice e la maggior parte delle pagine
sono cachate
nc_staticfilecache
Dipende dalle prestazioni del server (I/O, configurazioni
MySql Server)
34. E PERCHÉ NON INTEGRARE ?
cache_hash
risultati di alcune funzioni TYPO3 (p.e.
substituteMarkerArrayCached), usata durante il
processo di rendering della pagina
Ha senso usare questa cache solo ci sono pagine che non
vengono messe in cache (p.e. potrebbe non aver senso
abilitare memcache per questa cache).
cache_pagesection
Template TYPOSCRIPT parsed
può essere messa su memcache o database.
cache_pages
Questa cache deposita le pagine
ha senso usare il sistema più performante per questa
cache, perché la quantità di dati può essere notevole.
35. ALTRI SISTEMI DI CACHING
CDN (Content Delivery Network)
Rete di nodi (server) distribuiti
Collegati tramite Internet
Contenuti replicati sui nodi della rete
Quando un utente fa una richiesta alla CDN, il DNS
risolve il nodo più vicino
(location, disponibilità, etc…) e serve il client
36. QUALE SISTEMA SCEGLIERE ?
Il sistema di cache da utilizzare dipende
principalmente da:
Complessità sito
Quantità di pagine da mettere interamente in cache
Traffico
Visite, Picchi di traffico
Ambiente Server
FE/BE Server (S.O.)
Supporto I/O (NFS, etc…)
Tipo di contenuti da mettere in cache