Download - Typo3 tuning - Oltre la "classica" cache

Transcript
Page 1: Typo3 tuning - Oltre la "classica" cache

TYPO3 TUNINGOltre la “classica” cache

T3Camp Italia 2014, Milano 14-15 marzo

Page 2: Typo3 tuning - Oltre la "classica" cache

CHI SONO

Gianluca Strafella

Sviluppatore TYPO3 nel team di Webformat

Sviluppatore Magento nel team di Webformat

Contatti

[email protected]

www.webformat.com

Page 3: Typo3 tuning - Oltre la "classica" cache

DI COSA PARLEREMO

Caching in TYPO3

Altri sistemi di cache

Memcache

Redis

Varnish

Banchmarking dei vari sistemi e comparazione

Quale sistema scegliere ?

Page 4: Typo3 tuning - Oltre la "classica" cache

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

Page 5: Typo3 tuning - Oltre la "classica" cache

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

Page 6: Typo3 tuning - Oltre la "classica" cache

CACHING TYPO3

TYPO3 Code (Core, Estensioni)

Frontend(FrontendInterface)

Backend(BackendInterface)

DatabaseBackend

MemcaheBackend

RedisBackend

File Backend

APC Backend

XCacheBackend

Simple File

Backend

NullBackend

PDO

Backend

Transient Memory

Backend

Page 7: Typo3 tuning - Oltre la "classica" cache

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

Page 8: Typo3 tuning - Oltre la "classica" cache

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

Page 9: Typo3 tuning - Oltre la "classica" cache

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 threadseparato 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…)

Page 10: Typo3 tuning - Oltre la "classica" cache

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

Page 11: Typo3 tuning - Oltre la "classica" cache

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/

Page 12: Typo3 tuning - Oltre la "classica" cache

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

Page 13: Typo3 tuning - Oltre la "classica" cache

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

Page 14: Typo3 tuning - Oltre la "classica" cache

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

Page 15: Typo3 tuning - Oltre la "classica" cache

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

Page 16: Typo3 tuning - Oltre la "classica" cache

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

Page 17: Typo3 tuning - Oltre la "classica" cache

TEMPO MEDIO DI COMPLETAMENTO RICHIESTA

(HOME PAGE)

327.752

131.091

141.988

189.229TYPO3

MEMCACHED

REDIS

VARNISHRichieste 2000, Concorrenza 1000

Richieste 1000, Concorrenza 100

Richieste 1000, Concorrenza 10

Richieste 10 Concorrenza 1

Richieste 10 Concorrenza 2

ms

Page 18: Typo3 tuning - Oltre la "classica" cache

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

Page 19: Typo3 tuning - Oltre la "classica" cache

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

Page 20: Typo3 tuning - Oltre la "classica" cache

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

Page 21: Typo3 tuning - Oltre la "classica" cache

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

Page 22: Typo3 tuning - Oltre la "classica" cache

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

Page 23: Typo3 tuning - Oltre la "classica" cache

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

Page 24: Typo3 tuning - Oltre la "classica" cache

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

Page 25: Typo3 tuning - Oltre la "classica" cache

SISTEMI DI MONITORAGGIO

Page 26: Typo3 tuning - Oltre la "classica" cache

HIT VS MISS MEMCACHE-TOOLS, PHPMEMCACHEADMIN

Page 27: Typo3 tuning - Oltre la "classica" cache

HIT VS MISS … IN REDIS

REDIS-ADMIN

Page 28: Typo3 tuning - Oltre la "classica" cache

RAM E CPU… IN REDISREDIS-ADMIN

Page 29: Typo3 tuning - Oltre la "classica" cache

VARNISH

VARNISHSTAT

Page 30: Typo3 tuning - Oltre la "classica" cache

VARNISH

VARNISHHIST

Page 31: Typo3 tuning - Oltre la "classica" cache

RAM E CPUMEMCACHEM REDIS,TYPO3

Page 32: Typo3 tuning - Oltre la "classica" cache

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

Page 33: Typo3 tuning - Oltre la "classica" cache

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)

Page 34: Typo3 tuning - Oltre la "classica" cache

E PERCHÉ NON INTEGRARE ?

cache_hash

risultati di alcune funzioni TYPO3 (p.e. substituteMarkerArrayCached), usata durante ilprocesso di rendering della pagina

Ha senso usare questa cache solo ci sono pagine che non vengono messe in cache (p.e. potrebbe non aver sensoabilitare 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.

Page 35: Typo3 tuning - Oltre la "classica" cache

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

Page 36: Typo3 tuning - Oltre la "classica" cache

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

Page 37: Typo3 tuning - Oltre la "classica" 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/

Page 38: Typo3 tuning - Oltre la "classica" cache

GRAZIE PER L'ATTENZIONE

Contatti

[email protected]

http://it.linkedin.com/in/gianlucastrafella