Typo3 tuning - Oltre la "classica" cache

of 38 /38
TYPO3 TUNING Oltre la “classica” cache T3Camp Italia 2014, Milano 14-15 marzo

Embed Size (px)

description

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

Transcript of 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 [email protected] 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 25. SISTEMI DI MONITORAGGIO 26. HIT VS MISS MEMCACHE-TOOLS, PHPMEMCACHEADMIN 27. HIT VS MISS IN REDIS REDIS-ADMIN 28. RAM E CPU IN REDIS REDIS-ADMIN 29. VARNISH VARNISHSTAT 30. VARNISH VARNISHHIST 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/ 38. GRAZIE PER L'ATTENZIONE Contatti [email protected] http://it.linkedin.com/in/gianlucastrafella