Typo3 tuning - Oltre la "classica" cache

357 views

Published on

Analisi comparativa dei sistemi di caching esistenti integrabili con TYPO3 CMS.

Published in: Software
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
357
On SlideShare
0
From Embeds
0
Number of Embeds
15
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Typo3 tuning - Oltre la "classica" cache

  1. 1. TYPO3 TUNING Oltre la “classica” cache T3Camp Italia 2014, Milano 14-15 marzo
  2. 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. 3. DI COSA PARLEREMO  Caching in TYPO3  Altri sistemi di cache  Memcache  Redis  Varnish  Banchmarking dei vari sistemi e comparazione  Quale sistema scegliere ?
  4. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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
  25. 25. SISTEMI DI MONITORAGGIO
  26. 26. HIT VS MISS MEMCACHE-TOOLS, PHPMEMCACHEADMIN
  27. 27. HIT VS MISS … IN REDIS REDIS-ADMIN
  28. 28. RAM E CPU… IN REDIS REDIS-ADMIN
  29. 29. VARNISH VARNISHSTAT
  30. 30. VARNISH VARNISHHIST
  31. 31. RAM E CPU MEMCACHEM REDIS,TYPO3
  32. 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. 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. 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. 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. 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. 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/
  38. 38. GRAZIE PER L'ATTENZIONE Contatti gianluca.strafella@webformat.com http://it.linkedin.com/in/gianlucastrafella

×