SlideShare a Scribd company logo
1 of 38
TYPO3 TUNING
Oltre la “classica” cache
T3Camp Italia 2014, Milano 14-15 marzo
CHI SONO
Gianluca Strafella
 Sviluppatore TYPO3 nel team di Webformat
 Sviluppatore Magento nel team di Webformat
 Contatti
gianluca.strafella@webformat.com
www.webformat.com
DI COSA PARLEREMO
 Caching in TYPO3
 Altri sistemi di cache
 Memcache
 Redis
 Varnish
 Banchmarking dei vari sistemi e comparazione
 Quale sistema scegliere ?
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
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
CACHING TYPO3
TYPO3 Code (Core, Estensioni)
Frontend
(FrontendInterface)
Backend
(BackendInterface)
Database
Backend
Memcahe
Backend
Redis
Backend
File
Backend
APC
Backend
XCache
Backend
Simple File
Backend
Null
Backend
PDO
Backend
Transient Memory
Backend
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
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
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…)
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
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/
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
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
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
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
TEMPO MEDIO DI COMPLETAMENTO RICHIESTA
(HOME PAGE)
327.752
231.767
155.666
0.576
131.091
126.022
75.591
0.326
141.988
111.418
124.733
0.433
189.229
119.599
128.710
0.482
0.674
TYPO3
MEMCACHED
REDIS
VARNISH
Richieste 2000, Concorrenza 1000
Richieste 1000, Concorrenza 100
Richieste 1000, Concorrenza 10
Richieste 10 Concorrenza 1
Richieste 10 Concorrenza 2
ms
TEMPO MEDIO DI COMPLETAMENTO RICHIESTA
(HOME PAGE)
327.752
131.091
141.988
189.229
TYPO3
MEMCACHED
REDIS
VARNISH
Richieste 2000, Concorrenza 1000
Richieste 1000, Concorrenza 100
Richieste 1000, Concorrenza 10
Richieste 10 Concorrenza 1
Richieste 10 Concorrenza 2
ms
TEMPO MEDIO DI ATTESA (HOME PAGE)
2,180.500
1,333.000
719.000
149.500
217.000
47.500
2,292.000
1,675.000
1,766.500
67.000
30,070.000
24,106.500
20,184.000
94.500
1025
TYPO3
MEMCACHED
REDIS
VARNISH
Richieste 2000, Concorrenza 1000
Richieste 1000, Concorrenza 100
Richieste 1000, Concorrenza 10
Richieste 10 Concorrenza 1
Richieste 10 Concorrenza 2
ms
TEMPO MEDIO DI ATTESA (HOME PAGE)
2,180.500
1,333.000
719.000
149.500
217.000
47.500
2,292.000
1,675.000
1,766.500
67.000
30,070.000
24,106.500
20,184.000
94.500
1025
TYPO3
MEMCACHED
REDIS
VARNISH
Richieste 2000, Concorrenza 1000
Richieste 1000, Concorrenza 100
Richieste 1000, Concorrenza 10
Richieste 10 Concorrenza 1
Richieste 10 Concorrenza 2
ms
NUMERO DI RICHIESTE PER SECONDO
PAGINA INTERNA
20.600
13.160
12.600
3348.960
5.840
9.310
7.750
1395.530
9.680
8.490
8.49
1495.130
1252.810
TYPO3
MEMCACHED
REDIS
VARNISH
Richieste 2000, Concorrenza 1000
Richieste 1000, Concorrenza 100
Richieste 1000, Concorrenza 10
Richieste 10 Concorrenza 1
NUMERO DI RICHIESTE PER SECONDO
PAGINA INTERNA
20.600
13.160
12.600
3348.960
9.680
8.490
8.49
1495.130
TYPO3
MEMCACHED
REDIS
VARNISH
Richieste 2000, Concorrenza 1000
Richieste 1000, Concorrenza 100
Richieste 1000, Concorrenza 10
Richieste 10 Concorrenza 1
TEMPO MEDIO DI COMPLETAMENTO RICHIESTA
(PAGINA INTERNA)
79.356
1291.118
117.819
TYPO3
MEMCACHED
REDIS
VARNISH
Richieste 2000, Concorrenza 1000
Richieste 1000, Concorrenza 100
Richieste 1000, Concorrenza 10
Richieste 10 Concorrenza 1
ms
TEMPO MEDIO DI COMPLETAMENTO RICHIESTA
(PAGINA INTERNA)
48.551
75.988
79.356
0.299
171.245
107.449
1291.118
0.171
103.288
117.726
117.819
0.669
0.798
TYPO3
MEMCACHED
REDIS
VARNISH
Richieste 2000, Concorrenza 1000
Richieste 1000, Concorrenza 100
Richieste 1000, Concorrenza 10
Richieste 10 Concorrenza 1
ms
TEMPO MEDIO DI ATTESA (PAGINA INTERNA)
43.500
46.500
49.000
0.001
29,839.000
2,382.500
6,199.500
120.000
16,560.000
15,511.000
17,961.000
110.500
1169.5
TYPO3
MEMCACHED
REDIS
VARNISH
Richieste 2000, Concorrenza 1000
Richieste 1000, Concorrenza 100
Richieste 1000, Concorrenza 10
Richieste 10 Concorrenza 1
ms
SISTEMI DI MONITORAGGIO
HIT VS MISS
MEMCACHE-TOOLS, PHPMEMCACHEADMIN
HIT VS MISS … IN REDIS
REDIS-ADMIN
RAM E CPU… IN REDIS
REDIS-ADMIN
VARNISH
VARNISHSTAT
VARNISH
VARNISHHIST
RAM E CPU
MEMCACHEM REDIS,TYPO3
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
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)
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.
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
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
RIFERIMENTI BIBLIOGRAFICI
 TYPO3 Cache
 http://docs.typo3.org/typo3cms/CoreApiReference/CachingFramework/Architecture/Index.ht
ml
 Varnish
 http://www.varnish-cache.org/
 http://forge.typo3.org/projects/extension-moc_varnish
 http://www.slideshare.net/aoemedia/t3dd12-caching-with-varnish
 Redis
 http://redis.io/
 http://try.redis.io/
 https://github.com/sasanrose/phpredmin
 Memcache
 http://memcached.org/
 http://www.dmitry-dulepov.com/2008/12/how-to-enable-memcached-cache-in-typo3.html
 code.google.com/p/phpmemcacheadmin/
GRAZIE PER L'ATTENZIONE
Contatti
gianluca.strafella@webformat.com
http://it.linkedin.com/in/gianlucastrafella

More Related Content

Viewers also liked

Moodle settima parte: le risorse
Moodle settima parte: le risorseMoodle settima parte: le risorse
Moodle settima parte: le risorseAngelo Panini
 
Moodle quinta parte: la pagina principale di un corso
Moodle quinta parte: la pagina principale di un corsoMoodle quinta parte: la pagina principale di un corso
Moodle quinta parte: la pagina principale di un corsoAngelo Panini
 
Moodle seconda parte: la piattaforma
Moodle seconda parte: la piattaformaMoodle seconda parte: la piattaforma
Moodle seconda parte: la piattaformaAngelo Panini
 
Moodle quarta parte: allestire un corso
Moodle quarta parte: allestire un corsoMoodle quarta parte: allestire un corso
Moodle quarta parte: allestire un corsoAngelo Panini
 
Moodle 2.7 - corsi - Embed video slideshare
Moodle 2.7 - corsi - Embed video slideshareMoodle 2.7 - corsi - Embed video slideshare
Moodle 2.7 - corsi - Embed video slideshareLaura Camellini
 
Moodle 2.7 - corsi - importazione scorm
Moodle 2.7 - corsi - importazione scormMoodle 2.7 - corsi - importazione scorm
Moodle 2.7 - corsi - importazione scormLaura Camellini
 
Moodle 2.7 - amministrazione - corsi - messaggistica
Moodle 2.7 - amministrazione - corsi - messaggisticaMoodle 2.7 - amministrazione - corsi - messaggistica
Moodle 2.7 - amministrazione - corsi - messaggisticaLaura Camellini
 
Moodle 2.7 - amministrazione base - corsi - backup
Moodle 2.7 - amministrazione base - corsi - backupMoodle 2.7 - amministrazione base - corsi - backup
Moodle 2.7 - amministrazione base - corsi - backupLaura Camellini
 
Moodle ottava parte: gestire le attività - le lezioni
Moodle ottava parte: gestire le attività - le lezioniMoodle ottava parte: gestire le attività - le lezioni
Moodle ottava parte: gestire le attività - le lezioniAngelo Panini
 
Moodle terza parte: i ruoli
Moodle terza parte: i ruoliMoodle terza parte: i ruoli
Moodle terza parte: i ruoliAngelo Panini
 
Moodle 2.7 - amministrazione base - Plugin e ruoli
Moodle 2.7 - amministrazione base - Plugin e ruoliMoodle 2.7 - amministrazione base - Plugin e ruoli
Moodle 2.7 - amministrazione base - Plugin e ruoliLaura Camellini
 
Moodle prima parte: aspetti generali
Moodle prima parte: aspetti generaliMoodle prima parte: aspetti generali
Moodle prima parte: aspetti generaliAngelo Panini
 
Moodle nona parte: gestire le attività - compiti, quiz, scelta e scorm
Moodle nona parte: gestire le attività - compiti, quiz, scelta e scormMoodle nona parte: gestire le attività - compiti, quiz, scelta e scorm
Moodle nona parte: gestire le attività - compiti, quiz, scelta e scormAngelo Panini
 
Feedback Presentazioni Efficaci Valentina
Feedback Presentazioni Efficaci ValentinaFeedback Presentazioni Efficaci Valentina
Feedback Presentazioni Efficaci ValentinaFabrizio Cornalba
 

Viewers also liked (15)

Moodle settima parte: le risorse
Moodle settima parte: le risorseMoodle settima parte: le risorse
Moodle settima parte: le risorse
 
Moodle quinta parte: la pagina principale di un corso
Moodle quinta parte: la pagina principale di un corsoMoodle quinta parte: la pagina principale di un corso
Moodle quinta parte: la pagina principale di un corso
 
Moodle seconda parte: la piattaforma
Moodle seconda parte: la piattaformaMoodle seconda parte: la piattaforma
Moodle seconda parte: la piattaforma
 
Moodle quarta parte: allestire un corso
Moodle quarta parte: allestire un corsoMoodle quarta parte: allestire un corso
Moodle quarta parte: allestire un corso
 
Moodle 2.7 - corsi - Embed video slideshare
Moodle 2.7 - corsi - Embed video slideshareMoodle 2.7 - corsi - Embed video slideshare
Moodle 2.7 - corsi - Embed video slideshare
 
Moodle 2.7 - corsi - importazione scorm
Moodle 2.7 - corsi - importazione scormMoodle 2.7 - corsi - importazione scorm
Moodle 2.7 - corsi - importazione scorm
 
Presentazione aiken
Presentazione aikenPresentazione aiken
Presentazione aiken
 
Moodle 2.7 - amministrazione - corsi - messaggistica
Moodle 2.7 - amministrazione - corsi - messaggisticaMoodle 2.7 - amministrazione - corsi - messaggistica
Moodle 2.7 - amministrazione - corsi - messaggistica
 
Moodle 2.7 - amministrazione base - corsi - backup
Moodle 2.7 - amministrazione base - corsi - backupMoodle 2.7 - amministrazione base - corsi - backup
Moodle 2.7 - amministrazione base - corsi - backup
 
Moodle ottava parte: gestire le attività - le lezioni
Moodle ottava parte: gestire le attività - le lezioniMoodle ottava parte: gestire le attività - le lezioni
Moodle ottava parte: gestire le attività - le lezioni
 
Moodle terza parte: i ruoli
Moodle terza parte: i ruoliMoodle terza parte: i ruoli
Moodle terza parte: i ruoli
 
Moodle 2.7 - amministrazione base - Plugin e ruoli
Moodle 2.7 - amministrazione base - Plugin e ruoliMoodle 2.7 - amministrazione base - Plugin e ruoli
Moodle 2.7 - amministrazione base - Plugin e ruoli
 
Moodle prima parte: aspetti generali
Moodle prima parte: aspetti generaliMoodle prima parte: aspetti generali
Moodle prima parte: aspetti generali
 
Moodle nona parte: gestire le attività - compiti, quiz, scelta e scorm
Moodle nona parte: gestire le attività - compiti, quiz, scelta e scormMoodle nona parte: gestire le attività - compiti, quiz, scelta e scorm
Moodle nona parte: gestire le attività - compiti, quiz, scelta e scorm
 
Feedback Presentazioni Efficaci Valentina
Feedback Presentazioni Efficaci ValentinaFeedback Presentazioni Efficaci Valentina
Feedback Presentazioni Efficaci Valentina
 

Similar to Typo3 tuning - Oltre la "classica" cache

ASP.NET performance optimization
ASP.NET performance optimizationASP.NET performance optimization
ASP.NET performance optimizationAndrea Dottor
 
ASP.NET, ottimizziamo con la cache
ASP.NET, ottimizziamo con la cacheASP.NET, ottimizziamo con la cache
ASP.NET, ottimizziamo con la cacheAndrea Dottor
 
Distribuzione delle sessioni in PHP in caso di load balancing su più server
Distribuzione delle sessioni in PHP in caso di load balancing su più serverDistribuzione delle sessioni in PHP in caso di load balancing su più server
Distribuzione delle sessioni in PHP in caso di load balancing su più serverGianluca Gimigliano
 
Back to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizioBack to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizioMongoDB
 
System Administration: migliorare le performance di Magento Community Edition
System Administration: migliorare le performance di Magento Community EditionSystem Administration: migliorare le performance di Magento Community Edition
System Administration: migliorare le performance di Magento Community EditionMageSpecialist
 
System Administration: Migliorare le performance di Magento Community Edition
System Administration: Migliorare le performance di Magento Community EditionSystem Administration: Migliorare le performance di Magento Community Edition
System Administration: Migliorare le performance di Magento Community Editionmidimarcus
 
Tom EE appunti devoxx2012
Tom EE   appunti devoxx2012 Tom EE   appunti devoxx2012
Tom EE appunti devoxx2012 Nicola Pedot
 
MySQL 5
MySQL 5MySQL 5
MySQL 5jekil
 
MySQL Tech Tour 2016 - Database-as-a-Service con MySQL e Oracle Openstack
MySQL Tech Tour 2016 - Database-as-a-Service con MySQL e Oracle OpenstackMySQL Tech Tour 2016 - Database-as-a-Service con MySQL e Oracle Openstack
MySQL Tech Tour 2016 - Database-as-a-Service con MySQL e Oracle OpenstackPar-Tec S.p.A.
 
Aumentiamo la sicurezza in TYPO3
Aumentiamo la sicurezza in TYPO3Aumentiamo la sicurezza in TYPO3
Aumentiamo la sicurezza in TYPO3Mauro Lorenzutti
 

Similar to Typo3 tuning - Oltre la "classica" cache (20)

TYPO3 CMS 8.1 - Le novità
TYPO3 CMS 8.1 - Le novitàTYPO3 CMS 8.1 - Le novità
TYPO3 CMS 8.1 - Le novità
 
ASP.NET performance optimization
ASP.NET performance optimizationASP.NET performance optimization
ASP.NET performance optimization
 
ASP.NET, ottimizziamo con la cache
ASP.NET, ottimizziamo con la cacheASP.NET, ottimizziamo con la cache
ASP.NET, ottimizziamo con la cache
 
TYPO3 CMS 7.4 Le novita
TYPO3 CMS 7.4 Le novitaTYPO3 CMS 7.4 Le novita
TYPO3 CMS 7.4 Le novita
 
Distribuzione delle sessioni in PHP in caso di load balancing su più server
Distribuzione delle sessioni in PHP in caso di load balancing su più serverDistribuzione delle sessioni in PHP in caso di load balancing su più server
Distribuzione delle sessioni in PHP in caso di load balancing su più server
 
Back to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizioBack to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizio
 
IBM FlashSystem 820 e 720
IBM FlashSystem 820 e 720IBM FlashSystem 820 e 720
IBM FlashSystem 820 e 720
 
TYPO3 CMS 7.1 - Le novita
TYPO3 CMS 7.1 - Le novitaTYPO3 CMS 7.1 - Le novita
TYPO3 CMS 7.1 - Le novita
 
IBM FlashSystem 810 e 710
IBM FlashSystem 810 e 710IBM FlashSystem 810 e 710
IBM FlashSystem 810 e 710
 
System Administration: migliorare le performance di Magento Community Edition
System Administration: migliorare le performance di Magento Community EditionSystem Administration: migliorare le performance di Magento Community Edition
System Administration: migliorare le performance di Magento Community Edition
 
System Administration: Migliorare le performance di Magento Community Edition
System Administration: Migliorare le performance di Magento Community EditionSystem Administration: Migliorare le performance di Magento Community Edition
System Administration: Migliorare le performance di Magento Community Edition
 
Tom EE appunti devoxx2012
Tom EE   appunti devoxx2012 Tom EE   appunti devoxx2012
Tom EE appunti devoxx2012
 
Cesvip 20110127
Cesvip 20110127Cesvip 20110127
Cesvip 20110127
 
TYPO3 CMS 8.4 - Le novità
TYPO3 CMS 8.4 - Le novitàTYPO3 CMS 8.4 - Le novità
TYPO3 CMS 8.4 - Le novità
 
MySQL 5
MySQL 5MySQL 5
MySQL 5
 
MySQL Tech Tour 2016 - Database-as-a-Service con MySQL e Oracle Openstack
MySQL Tech Tour 2016 - Database-as-a-Service con MySQL e Oracle OpenstackMySQL Tech Tour 2016 - Database-as-a-Service con MySQL e Oracle Openstack
MySQL Tech Tour 2016 - Database-as-a-Service con MySQL e Oracle Openstack
 
TYPO3 CMS 7.6 - Le novita
TYPO3 CMS 7.6 - Le novitaTYPO3 CMS 7.6 - Le novita
TYPO3 CMS 7.6 - Le novita
 
TYPO3 CMS 7.5: le novita
TYPO3 CMS 7.5: le novita TYPO3 CMS 7.5: le novita
TYPO3 CMS 7.5: le novita
 
TYPO3 8.5 - Le novità
TYPO3 8.5 - Le novitàTYPO3 8.5 - Le novità
TYPO3 8.5 - Le novità
 
Aumentiamo la sicurezza in TYPO3
Aumentiamo la sicurezza in TYPO3Aumentiamo la sicurezza in TYPO3
Aumentiamo la sicurezza in TYPO3
 

Typo3 tuning - Oltre la "classica" cache

  • 1. TYPO3 TUNING Oltre la “classica” cache T3Camp Italia 2014, Milano 14-15 marzo
  • 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
  • 6. CACHING TYPO3 TYPO3 Code (Core, Estensioni) Frontend (FrontendInterface) Backend (BackendInterface) Database Backend Memcahe Backend Redis Backend File Backend APC Backend XCache Backend Simple File Backend Null Backend PDO Backend Transient Memory Backend
  • 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
  • 16. TEMPO MEDIO DI COMPLETAMENTO RICHIESTA (HOME PAGE) 327.752 231.767 155.666 0.576 131.091 126.022 75.591 0.326 141.988 111.418 124.733 0.433 189.229 119.599 128.710 0.482 0.674 TYPO3 MEMCACHED REDIS VARNISH Richieste 2000, Concorrenza 1000 Richieste 1000, Concorrenza 100 Richieste 1000, Concorrenza 10 Richieste 10 Concorrenza 1 Richieste 10 Concorrenza 2 ms
  • 17. TEMPO MEDIO DI COMPLETAMENTO RICHIESTA (HOME PAGE) 327.752 131.091 141.988 189.229 TYPO3 MEMCACHED REDIS VARNISH Richieste 2000, Concorrenza 1000 Richieste 1000, Concorrenza 100 Richieste 1000, Concorrenza 10 Richieste 10 Concorrenza 1 Richieste 10 Concorrenza 2 ms
  • 18. TEMPO MEDIO DI ATTESA (HOME PAGE) 2,180.500 1,333.000 719.000 149.500 217.000 47.500 2,292.000 1,675.000 1,766.500 67.000 30,070.000 24,106.500 20,184.000 94.500 1025 TYPO3 MEMCACHED REDIS VARNISH Richieste 2000, Concorrenza 1000 Richieste 1000, Concorrenza 100 Richieste 1000, Concorrenza 10 Richieste 10 Concorrenza 1 Richieste 10 Concorrenza 2 ms
  • 19. TEMPO MEDIO DI ATTESA (HOME PAGE) 2,180.500 1,333.000 719.000 149.500 217.000 47.500 2,292.000 1,675.000 1,766.500 67.000 30,070.000 24,106.500 20,184.000 94.500 1025 TYPO3 MEMCACHED REDIS VARNISH Richieste 2000, Concorrenza 1000 Richieste 1000, Concorrenza 100 Richieste 1000, Concorrenza 10 Richieste 10 Concorrenza 1 Richieste 10 Concorrenza 2 ms
  • 20. NUMERO DI RICHIESTE PER SECONDO PAGINA INTERNA 20.600 13.160 12.600 3348.960 5.840 9.310 7.750 1395.530 9.680 8.490 8.49 1495.130 1252.810 TYPO3 MEMCACHED REDIS VARNISH Richieste 2000, Concorrenza 1000 Richieste 1000, Concorrenza 100 Richieste 1000, Concorrenza 10 Richieste 10 Concorrenza 1
  • 21. NUMERO DI RICHIESTE PER SECONDO PAGINA INTERNA 20.600 13.160 12.600 3348.960 9.680 8.490 8.49 1495.130 TYPO3 MEMCACHED REDIS VARNISH Richieste 2000, Concorrenza 1000 Richieste 1000, Concorrenza 100 Richieste 1000, Concorrenza 10 Richieste 10 Concorrenza 1
  • 22. TEMPO MEDIO DI COMPLETAMENTO RICHIESTA (PAGINA INTERNA) 79.356 1291.118 117.819 TYPO3 MEMCACHED REDIS VARNISH Richieste 2000, Concorrenza 1000 Richieste 1000, Concorrenza 100 Richieste 1000, Concorrenza 10 Richieste 10 Concorrenza 1 ms
  • 23. TEMPO MEDIO DI COMPLETAMENTO RICHIESTA (PAGINA INTERNA) 48.551 75.988 79.356 0.299 171.245 107.449 1291.118 0.171 103.288 117.726 117.819 0.669 0.798 TYPO3 MEMCACHED REDIS VARNISH Richieste 2000, Concorrenza 1000 Richieste 1000, Concorrenza 100 Richieste 1000, Concorrenza 10 Richieste 10 Concorrenza 1 ms
  • 24. TEMPO MEDIO DI ATTESA (PAGINA INTERNA) 43.500 46.500 49.000 0.001 29,839.000 2,382.500 6,199.500 120.000 16,560.000 15,511.000 17,961.000 110.500 1169.5 TYPO3 MEMCACHED REDIS VARNISH Richieste 2000, Concorrenza 1000 Richieste 1000, Concorrenza 100 Richieste 1000, Concorrenza 10 Richieste 10 Concorrenza 1 ms
  • 26. HIT VS MISS MEMCACHE-TOOLS, PHPMEMCACHEADMIN
  • 27. HIT VS MISS … IN REDIS REDIS-ADMIN
  • 28. RAM E CPU… IN REDIS REDIS-ADMIN
  • 31. RAM E CPU MEMCACHEM REDIS,TYPO3
  • 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
  • 37. RIFERIMENTI BIBLIOGRAFICI  TYPO3 Cache  http://docs.typo3.org/typo3cms/CoreApiReference/CachingFramework/Architecture/Index.ht ml  Varnish  http://www.varnish-cache.org/  http://forge.typo3.org/projects/extension-moc_varnish  http://www.slideshare.net/aoemedia/t3dd12-caching-with-varnish  Redis  http://redis.io/  http://try.redis.io/  https://github.com/sasanrose/phpredmin  Memcache  http://memcached.org/  http://www.dmitry-dulepov.com/2008/12/how-to-enable-memcached-cache-in-typo3.html  code.google.com/p/phpmemcacheadmin/