SlideShare ist ein Scribd-Unternehmen logo
1 von 18
tiPRO – didžiausias interneto media tinklas Lietuvoje. Apie 50 svetainių, apie 70% mėnesio auditorijos pasiekiamumas!
HTTP užklausų kešavimas naudojant Varnish
Paulius Leščinskas
2013-03-07
tiPRO – didžiausias interneto media tinklas Lietuvoje. Apie 50 svetainių, apie 70% mėnesio auditorijos pasiekiamumas!
Labas! :)
Esu Paulius Leščinskas
CTO @ Tipro group
● lescinskas.lt
● lt.linkedin.com/in/pluton
● fb.me/paulius.lescinskas
● @lescinskas
tiPRO – didžiausias interneto media tinklas Lietuvoje. Apie 50 svetainių, apie 70% mėnesio auditorijos pasiekiamumas!
Tipro Group?
tiPRO – didžiausias interneto media tinklas Lietuvoje. Apie 50 svetainių, apie 70% mėnesio auditorijos pasiekiamumas!
HTTP užklausa
DNS resolve'inimas
Forward proxy
Reverse proxy
HTTP serveris
Aplikacija
Duomenų bazė
Užklausa į serverį
tiPRO – didžiausias interneto media tinklas Lietuvoje. Apie 50 svetainių, apie 70% mėnesio auditorijos pasiekiamumas!
HTTP užklausa
DNS resolve'inimas
Forward proxy
Reverse proxy
HTTP serveris
Aplikacija
Duomenų bazė
Užklausa į serverį
CACHE !
tiPRO – didžiausias interneto media tinklas Lietuvoje. Apie 50 svetainių, apie 70% mėnesio auditorijos pasiekiamumas!
Kešavimas naudojant HTTP header'ius
●
Expires
●
Cache-control
●
Last-modified
●
Etag
● If-modified-since
● If-none-match
● Vary
Proxy skirtas header'is:
Cache-control: s-maxage=<TTL>
tiPRO – didžiausias interneto media tinklas Lietuvoje. Apie 50 svetainių, apie 70% mėnesio auditorijos pasiekiamumas!
Varnish UAB „Tipro“
● Demotyvacija,
2011m.
● Uogos.lt, 2012m.
gruodis
Ir kt...
● Gaspadine.lt, 2012m.
gruodis
tiPRO – didžiausias interneto media tinklas Lietuvoje. Apie 50 svetainių, apie 70% mėnesio auditorijos pasiekiamumas!
Varnish instaliavimas
● Instaliavimas
Ubuntu/Debian: apt-get install varnish
Centos/Redhat: yum install varnish
● Konfigūravimas
– Daemono configas:
Centos: /etc/sysconfig/varnish
Ubuntu: /etc/default/varnish
(portas, kešo saugojimo variklis, atminties kiekis, worker'ių kiekis
etc.)
– VCL (Varnish configuration language)
/etc/varnish/default.vcl
(backend'ai, funkcijos)
tiPRO – didžiausias interneto media tinklas Lietuvoje. Apie 50 svetainių, apie 70% mėnesio auditorijos pasiekiamumas!
Varnish veikimo schema
● vcl_recv - entry point. Normalizuojama užklausa,
ACL, parenkamas backend'as
● vcl_fetch - iškviečiama gavus atsakymą iš
backend'o. Pakeičiamas TTL, modifikuojamas
atsakymas (dažniausiai header'iai)
● vcl_miss - iškviečiama neradus objekto keše.
Naudojama purge'inti įrašą arba modifikuoti
backend'o header'ius
●
vcl_hit - iškviečiama paėmus įrašą iš kešo. Galima
pakeisti TTL arba purge'inti įrašą
●
vcl_error - sintetinės klaidos generavimo funkcija.
● vcl_deliver - exit point. Naudojama pridėti
header'ius debug'inimui.
●
vcl_hash - generuojamas kešo raktas
(apibrėžiamas request'o unikalumas)
●
vcl_pass
● vcl_pipe
tiPRO – didžiausias interneto media tinklas Lietuvoje. Apie 50 svetainių, apie 70% mėnesio auditorijos pasiekiamumas!
VCL kintamieji
● client.ip - kliento IP adresas
● req.request - GET/POST/PURGE etc.
● req.url - /straipsnis/blablabla
● req.http.<header> - HTTP header'is, pvz.: req.http.Cookie
● beresp.status - HTTP kodas (200, 404 etc.)
● beresp.ttl - (!!!) TTL pagal header'ius (s-maxage, max-age, Expires, default TTL
[120s])
● beresp.storage - nurodomas kešo saugojimo variklis
● obj.* - kešo duomenys
tiPRO – didžiausias interneto media tinklas Lietuvoje. Apie 50 svetainių, apie 70% mėnesio auditorijos pasiekiamumas!
VCL pavyzdys
sub vcl_recv {
# Normalize the Host: header
if (req.http.host ~ "(?i)^(www.)?example.com$") {
set req.http.host = "www.example.com";
}
}
sub vcl_fetch {
# Don't cache cookies
remove beresp.http.Set-Cookie;
set beresp.ttl = 30s;
}
tiPRO – didžiausias interneto media tinklas Lietuvoje. Apie 50 svetainių, apie 70% mėnesio auditorijos pasiekiamumas!
REMOTE_ADDR
● VCL:
remove req.http.X-Forwarded-For;
set req.http.X-Forwarded-For = client.ip;
(arba kitą header'į)
● Apache: mod_rpaf (reverse proxy add
forward)
● Nginx: HttpRealipModule
tiPRO – didžiausias interneto media tinklas Lietuvoje. Apie 50 svetainių, apie 70% mėnesio auditorijos pasiekiamumas!
ESI (Edge site includes)
sub vcl_fetch {
set beresp.do_esi = true;
}
<esi:include src="/user.php" />
tiPRO – didžiausias interneto media tinklas Lietuvoje. Apie 50 svetainių, apie 70% mėnesio auditorijos pasiekiamumas!
Kešo invalidavimas (purge)
acl purge {
"localhost";
"127.0.0.1";
"10.10.0.0"/24;
}
sub vcl_recv {
if (req.request == "PURGE") {
if (!client.ip ~ purge) {
error 405 "Not allowed.";
}
return (lookup);
}
...
}
sub vcl_hit {
if (req.request == "PURGE") {
purge; # Varnish 3
# set obj.ttl = 0s; # Varnish 2
error 200 "Purged.";
}
}
CURLOPT_CUSTOMREQUEST "PURGE"
tiPRO – didžiausias interneto media tinklas Lietuvoje. Apie 50 svetainių, apie 70% mėnesio auditorijos pasiekiamumas!
Administravimo komandos
● varnishadm – keisti parametrus, VCL config'ą
be reload/restart
● varnishlog – real time log
● varnishncsa - real time NCSA (Apache) style
log
● varnishstat - statistika
● varnishtop - log'o top'as
tiPRO – didžiausias interneto media tinklas Lietuvoje. Apie 50 svetainių, apie 70% mėnesio auditorijos pasiekiamumas!
Ką pamiršau?
● Directors
● Health-check
● Grace mode
● Saint mode
priminkit, ko dar nepaminėjau :)
tiPRO – didžiausias interneto media tinklas Lietuvoje. Apie 50 svetainių, apie 70% mėnesio auditorijos pasiekiamumas!
Daugiau informacijos...
● www.varnish-cache.org
● man varnish
● man vcl
● google
● wikipedia
● etc.
tiPRO – didžiausias interneto media tinklas Lietuvoje. Apie 50 svetainių, apie 70% mėnesio auditorijos pasiekiamumas!
Ačiū! :)
Palik atsiliepimą: https://joind.in/8254

Weitere ähnliche Inhalte

Empfohlen

PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Applitools
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at WorkGetSmarter
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...DevGAMM Conference
 

Empfohlen (20)

Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
 

HTTP užklausų kešavimas naudojant Varnish

  • 1. tiPRO – didžiausias interneto media tinklas Lietuvoje. Apie 50 svetainių, apie 70% mėnesio auditorijos pasiekiamumas! HTTP užklausų kešavimas naudojant Varnish Paulius Leščinskas 2013-03-07
  • 2. tiPRO – didžiausias interneto media tinklas Lietuvoje. Apie 50 svetainių, apie 70% mėnesio auditorijos pasiekiamumas! Labas! :) Esu Paulius Leščinskas CTO @ Tipro group ● lescinskas.lt ● lt.linkedin.com/in/pluton ● fb.me/paulius.lescinskas ● @lescinskas
  • 3. tiPRO – didžiausias interneto media tinklas Lietuvoje. Apie 50 svetainių, apie 70% mėnesio auditorijos pasiekiamumas! Tipro Group?
  • 4. tiPRO – didžiausias interneto media tinklas Lietuvoje. Apie 50 svetainių, apie 70% mėnesio auditorijos pasiekiamumas! HTTP užklausa DNS resolve'inimas Forward proxy Reverse proxy HTTP serveris Aplikacija Duomenų bazė Užklausa į serverį
  • 5. tiPRO – didžiausias interneto media tinklas Lietuvoje. Apie 50 svetainių, apie 70% mėnesio auditorijos pasiekiamumas! HTTP užklausa DNS resolve'inimas Forward proxy Reverse proxy HTTP serveris Aplikacija Duomenų bazė Užklausa į serverį CACHE !
  • 6. tiPRO – didžiausias interneto media tinklas Lietuvoje. Apie 50 svetainių, apie 70% mėnesio auditorijos pasiekiamumas! Kešavimas naudojant HTTP header'ius ● Expires ● Cache-control ● Last-modified ● Etag ● If-modified-since ● If-none-match ● Vary Proxy skirtas header'is: Cache-control: s-maxage=<TTL>
  • 7. tiPRO – didžiausias interneto media tinklas Lietuvoje. Apie 50 svetainių, apie 70% mėnesio auditorijos pasiekiamumas! Varnish UAB „Tipro“ ● Demotyvacija, 2011m. ● Uogos.lt, 2012m. gruodis Ir kt... ● Gaspadine.lt, 2012m. gruodis
  • 8. tiPRO – didžiausias interneto media tinklas Lietuvoje. Apie 50 svetainių, apie 70% mėnesio auditorijos pasiekiamumas! Varnish instaliavimas ● Instaliavimas Ubuntu/Debian: apt-get install varnish Centos/Redhat: yum install varnish ● Konfigūravimas – Daemono configas: Centos: /etc/sysconfig/varnish Ubuntu: /etc/default/varnish (portas, kešo saugojimo variklis, atminties kiekis, worker'ių kiekis etc.) – VCL (Varnish configuration language) /etc/varnish/default.vcl (backend'ai, funkcijos)
  • 9. tiPRO – didžiausias interneto media tinklas Lietuvoje. Apie 50 svetainių, apie 70% mėnesio auditorijos pasiekiamumas! Varnish veikimo schema ● vcl_recv - entry point. Normalizuojama užklausa, ACL, parenkamas backend'as ● vcl_fetch - iškviečiama gavus atsakymą iš backend'o. Pakeičiamas TTL, modifikuojamas atsakymas (dažniausiai header'iai) ● vcl_miss - iškviečiama neradus objekto keše. Naudojama purge'inti įrašą arba modifikuoti backend'o header'ius ● vcl_hit - iškviečiama paėmus įrašą iš kešo. Galima pakeisti TTL arba purge'inti įrašą ● vcl_error - sintetinės klaidos generavimo funkcija. ● vcl_deliver - exit point. Naudojama pridėti header'ius debug'inimui. ● vcl_hash - generuojamas kešo raktas (apibrėžiamas request'o unikalumas) ● vcl_pass ● vcl_pipe
  • 10. tiPRO – didžiausias interneto media tinklas Lietuvoje. Apie 50 svetainių, apie 70% mėnesio auditorijos pasiekiamumas! VCL kintamieji ● client.ip - kliento IP adresas ● req.request - GET/POST/PURGE etc. ● req.url - /straipsnis/blablabla ● req.http.<header> - HTTP header'is, pvz.: req.http.Cookie ● beresp.status - HTTP kodas (200, 404 etc.) ● beresp.ttl - (!!!) TTL pagal header'ius (s-maxage, max-age, Expires, default TTL [120s]) ● beresp.storage - nurodomas kešo saugojimo variklis ● obj.* - kešo duomenys
  • 11. tiPRO – didžiausias interneto media tinklas Lietuvoje. Apie 50 svetainių, apie 70% mėnesio auditorijos pasiekiamumas! VCL pavyzdys sub vcl_recv { # Normalize the Host: header if (req.http.host ~ "(?i)^(www.)?example.com$") { set req.http.host = "www.example.com"; } } sub vcl_fetch { # Don't cache cookies remove beresp.http.Set-Cookie; set beresp.ttl = 30s; }
  • 12. tiPRO – didžiausias interneto media tinklas Lietuvoje. Apie 50 svetainių, apie 70% mėnesio auditorijos pasiekiamumas! REMOTE_ADDR ● VCL: remove req.http.X-Forwarded-For; set req.http.X-Forwarded-For = client.ip; (arba kitą header'į) ● Apache: mod_rpaf (reverse proxy add forward) ● Nginx: HttpRealipModule
  • 13. tiPRO – didžiausias interneto media tinklas Lietuvoje. Apie 50 svetainių, apie 70% mėnesio auditorijos pasiekiamumas! ESI (Edge site includes) sub vcl_fetch { set beresp.do_esi = true; } <esi:include src="/user.php" />
  • 14. tiPRO – didžiausias interneto media tinklas Lietuvoje. Apie 50 svetainių, apie 70% mėnesio auditorijos pasiekiamumas! Kešo invalidavimas (purge) acl purge { "localhost"; "127.0.0.1"; "10.10.0.0"/24; } sub vcl_recv { if (req.request == "PURGE") { if (!client.ip ~ purge) { error 405 "Not allowed."; } return (lookup); } ... } sub vcl_hit { if (req.request == "PURGE") { purge; # Varnish 3 # set obj.ttl = 0s; # Varnish 2 error 200 "Purged."; } } CURLOPT_CUSTOMREQUEST "PURGE"
  • 15. tiPRO – didžiausias interneto media tinklas Lietuvoje. Apie 50 svetainių, apie 70% mėnesio auditorijos pasiekiamumas! Administravimo komandos ● varnishadm – keisti parametrus, VCL config'ą be reload/restart ● varnishlog – real time log ● varnishncsa - real time NCSA (Apache) style log ● varnishstat - statistika ● varnishtop - log'o top'as
  • 16. tiPRO – didžiausias interneto media tinklas Lietuvoje. Apie 50 svetainių, apie 70% mėnesio auditorijos pasiekiamumas! Ką pamiršau? ● Directors ● Health-check ● Grace mode ● Saint mode priminkit, ko dar nepaminėjau :)
  • 17. tiPRO – didžiausias interneto media tinklas Lietuvoje. Apie 50 svetainių, apie 70% mėnesio auditorijos pasiekiamumas! Daugiau informacijos... ● www.varnish-cache.org ● man varnish ● man vcl ● google ● wikipedia ● etc.
  • 18. tiPRO – didžiausias interneto media tinklas Lietuvoje. Apie 50 svetainių, apie 70% mėnesio auditorijos pasiekiamumas! Ačiū! :) Palik atsiliepimą: https://joind.in/8254