Differences

This shows you the differences between two versions of the page.

Link to this comparison view

saisp:labs:09:contents:04 [2013/11/11 00:46]
127.0.0.1 external edit
saisp:labs:09:contents:04 [2014/05/05 13:02] (current)
razvan.deaconescu
Line 1: Line 1:
-==== 04. Lorem ipsum ====+==== 04. [15p] Caching în Varnish ​====
  
-...+Vrem să vedem cum se comportă cache-ul în VarnishIntrările în Varnish sunt cache-uite pentru o perioadă de timp înainte să expireDupă expirarea timpului respectiv, se realizează o nouă cerere către serverul web pentru obținerea din nou a paginii.
  
 +Timpul de viață al cache-ului este dat de o variabilă TTL internă a Varnish. Valoarea sa este în mod implicit configurată la ''​120''​ de secunde. Putem determina acest lucru prin intermediul comenzii:<​code>​
 +root@varnish:​~#​ varnishadm param.show default_ttl
 +</​code>​
  
 +Valorea implicită, afișată de comanda de mai sus este ''​120''​ de secunde. Această valoare poate fi configurată în fișierul ''/​etc/​default/​varnish'';​ este vorba de directiva ''​VARNISH_TTL''​.
 +
 +Ca să urmărim expirarea cache-ului, vom folosi comanda ''​varnishlog''​ în forma de mai jos:<​code>​
 +root@varnish:​~#​ varnishlog -i VCL_Call
 +</​code>​
 +Apoi facem cereri către fișierele cu extensia ''​.dat''​ menționate în exercițiul anterior.
 +
 +Observăm că apare un mesaj ce conține cuvântul ''​miss''​ atunci când informația nu se găsește în cache, și apoi un mesaj ce conține cuvântul ''​hit''​ când informația este în cache. După ''​120''​ de secunde cache-ul va expira și atunci un acces va genera un ''​miss''​.
 +
 +După ce ați generat un mesaj ''​miss''​ pe fișierul ''​100k.dat'',​ adică informația nu era, dar acum este, în cache, rescrieți fișierul pe serverul web, în directorul ''/​var/​www/​data/​100k.dat''​ folosind comanda:<​code>​
 +root@web:/​var/​www/​html/​data#​ dd if=/​dev/​urandom of=100k.dat bs=100k count=1
 +</​code>​
 +
 +Apoi accesați din nou fișierul și urmăriți output-ul comenzii ''​varnishlog''​. Veți observa că fișierul a fost obținut din cache. Până când cache-ul nu expiră orice modificare a fișierului nu va fi vizibilă în cache.
 +
 +Pentru a preveni rămânerea în cache a unui obiect dat, se poate folosi [[https://​www.varnish-cache.org/​docs/​3.0/​tutorial/​purging.html|purging sau banning]]. După ce au ajuns în cache fișierele cu extensia ''​.dat'',​ faceți ban acelor fișiere pentru a fi recitite de pe server.
 +
 +<note tip>
 +Urmăriți indicațiile de [[https://​www.varnish-cache.org/​docs/​3.0/​tutorial/​purging.html#​bans|aici]]. Folosiți comanda ''​varnishadm''​ pentru a accesa CLI-ul de configurare Varnish.
 +</​note>​
 +
 +<​solution -hidden>
 +Pentru început așteptăm să expire cache-ul Varnish pentru pagina ''/​data/​100k.dat''​ după care o reaccesăm de pe sistemul gazdă (''​mjolnir''​). În ''​varnishlog''​ va apărea un mesaj precum cel de mai jos:<​code>​
 +root@varnish:​~#​ varnishlog -i VCL_Call
 +   12 BackendClose - default
 +   12 BackendOpen ​ b default 192.168.0.3 42737 192.168.0.2 80
 +   12 BackendReuse b default
 +   11 SessionOpen ​ c 192.168.0.1 37545 :80
 +   11 VCL_call ​    c recv
 +   11 VCL_call ​    c hash
 +   11 VCL_call ​    c miss
 +   11 VCL_call ​    c fetch
 +   11 VCL_call ​    c deliver
 +   11 ReqEnd ​      c 349371766 1399269441.987185955 1399269442.000175238 0.000062466 0.005365372 0.007623911
 +   11 SessionClose c timeout
 +   11 SessionOpen ​ c 192.168.0.1 37548 :80
 +   11 VCL_call ​    c recv
 +   11 VCL_call ​    c hash
 +   11 VCL_call ​    c hit
 +   11 VCL_call ​    c deliver
 +   11 ReqEnd ​      c 349371767 1399269494.260819435 1399269494.269623995 0.000100136 0.000047445 0.008757114
 +</​code>​
 +Mai sus au fost două accese. Primul acces a generat ''​miss'',​ iar al doilea a generat ''​hit''​. Pentru a anula cache-ul paginii ''/​data/​100k.dat''​ folosim comanda ''​ban''​ în consola ''​varnishadm'':<​code>​
 +root@varnish:​~#​ varnishadm ​
 +[...]
 +varnish> ban req.http.host == "​192.168.0.3"​ && req.url ~ "​.dat$"​
 +200
 +</​code>​
 +După această rulare, accesăm din nou pagina ''/​data/​100k.dat''​ iar output-ul comenzii ''​varnishlog''​ va afișa un ''​miss'':<​code>​
 +   12 BackendClose b default
 +   12 BackendOpen ​ b default 192.168.0.3 42742 192.168.0.2 80
 +   12 BackendReuse b default
 +   11 SessionOpen ​ c 192.168.0.1 37566 :80
 +   11 VCL_call ​    c recv
 +   11 VCL_call ​    c hash
 +   11 VCL_call ​    c miss
 +   11 VCL_call ​    c fetch
 +   11 VCL_call ​    c deliver
 +   11 ReqEnd ​      c 349371771 1399269730.749448776 1399269730.762530804 0.000076056 0.006940126 0.006141901
 +</​code>​
 +</​solution>​
saisp/labs/09/contents/04.1384123598.txt.gz · Last modified: 2014/04/28 15:52 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0