Upload
digicomp-academy-ag
View
631
Download
2
Embed Size (px)
Citation preview
snowflake | OpenTuesday - Jede Sekunde zählt: Webbeschleuniger Varnish im Einsatz, 01.10.2013 1
Jede Sekunde zählt
Webbeschleuniger Varnish im Einsatz
snowflake | OpenTuesday - Jede Sekunde zählt: Webbeschleuniger Varnish im Einsatz, 01.10.2013 2
Agenda Über snowflakeWieso HTTP Caching
Alternativen Funktionsweise
Über Varnish
Module & Integrationen
snowflake | OpenTuesday - Jede Sekunde zählt: Webbeschleuniger Varnish im Einsatz, 01.10.2013 3
Über mich
Andri SteinerLeiter Hosting
Datacenter Automation
Varnishevangelist ☺
VW Bus SchrauberGleitschirmpilot
snowflake | OpenTuesday - Jede Sekunde zählt: Webbeschleuniger Varnish im Einsatz, 01.10.2013 4
snowflakekurz vorgestellt Gegründet 1999
Büros in Zürich, Bern und Luzern
VarnishHosting & Integrations-partner
Fokus auf Open Source Technologien und Weblösungen
rund 50 Mitarbeiter
snowflake | OpenTuesday - Jede Sekunde zählt: Webbeschleuniger Varnish im Einsatz, 01.10.2013 5
Hosting
Service & Support
SchulungDesign
Beratung und Konzeption Umsetzung
snowflakekurz vorgestellt
snowflake | OpenTuesday - Jede Sekunde zählt: Webbeschleuniger Varnish im Einsatz, 01.10.2013 6
2005: Idee @ Verdens Gang AS
Poul-Henning Kamp BSD Lizenz
Redpill Linpro / VarnishSoftware AS
kommerzieller Support,Zusatzmodule
2006: v12008: v22011: v3
Integrations-/Hosting-/Schulungs-Partner
Varnishkurz vorgestellt
snowflake | OpenTuesday - Jede Sekunde zählt: Webbeschleuniger Varnish im Einsatz, 01.10.2013 7
Wieso HTTP Caching
Geschwindigkeit erhöhen Server entlasten
Besucher-zufriedenheit steigern Kosten senken
snowflake | OpenTuesday - Jede Sekunde zählt: Webbeschleuniger Varnish im Einsatz, 01.10.2013 8
Geschwindigkeit erhöhen
schnelle Seite
glückliche Besucher
Besucher-zufriedenheit steigern
250'000 req/sauf Desktop Hardware
1s Verzögerung-11% Besucher-16% Zufriedenh.-7% Verkäufe
snowflake | OpenTuesday - Jede Sekunde zählt: Webbeschleuniger Varnish im Einsatz, 01.10.2013 9
Server entlastenweniger Server, kleinere Server
massive Kosten-einsparungen
von 14 auf 2 (1) Server
snowflake | OpenTuesday - Jede Sekunde zählt: Webbeschleuniger Varnish im Einsatz, 01.10.2013 10
Weitere Vorteile Redundanz
DoS
Business Logik in VCL
sehr schnellsehr flexibel
geografische Verteilung Load Balancer
Lizenz
snowflake | OpenTuesday - Jede Sekunde zählt: Webbeschleuniger Varnish im Einsatz, 01.10.2013 11
Softwarez.B. Squidlangsamerweniger flexibelkein SupportAlternativen
Hardwarez.B. BigIP
weniger flexibelsehr teuer
CDNsgut für reines HTTP CachingunflexibelVendor Lock-Insehr teuer
Caching auf Applikations-ebenelangsamerunflexibelAbhängigkeiten
Hardware
hohe Kostenkein/kleiner Geschwindigkeits-zuwachs
SSL Support
in den meisten Alternativen enthaltenNICHT in Varnish
snowflake | OpenTuesday - Jede Sekunde zählt: Webbeschleuniger Varnish im Einsatz, 01.10.2013 12
sub vcl_fetch {# Cache only GET or HEAD Requestsif (req.request != "GET" && req.request != "HEAD") {
return (hit_for_pass);}
# Cache static filesif (req.url ~ "^[^?]*\.(css|js|htc|txt|swf|flv|pdf|gif|jpe?
g|png|ico|woff|ttf|eot|otf|xml|md5|json)($|\?)") {return (deliver);
}
# Cache static Pagesif (beresp.http.TYPO3Pid && beresp.http.Pragma == "public") {
unset beresp.http.SetCookie;return (deliver);
}
# do not cache everything elsereturn (hit_for_pass);
}
FunktionsweiseHTTP reverse Proxy Server
Caching im RAM/Swap
sehr effiziente Programmierung
VCL
Varnish Configuration Language
snowflake | OpenTuesday - Jede Sekunde zählt: Webbeschleuniger Varnish im Einsatz, 01.10.2013 13
ESIEdge Side Includes
„iframes“ werden von Varnish zusammengesetzt
dynamischen und statischen Inhalt mischen
kann Sinn machen, muss aber nicht
<html><body>
<h1>Privater Bereich</h1><esi:include src="/privat/" /><h1>News</h1><p>...</p>
</body></html>
besser AJAX verwenden
ESI Requests müssen sehr performant sein
Debugging kompliziert
snowflake | OpenTuesday - Jede Sekunde zählt: Webbeschleuniger Varnish im Einsatz, 01.10.2013 14
HTTP Standards
Serverseitiger HTTP reverse Proxy Server
(früher: Clientseitig)
alle nötigen Funktionen bereits spezifiziert
keine Magie in Varnish
Magie in VCL möglich,aber nicht zwingend nötig
GET / POST richtig unterscheiden
snowflake | OpenTuesday - Jede Sekunde zählt: Webbeschleuniger Varnish im Einsatz, 01.10.2013 15
HTTP Standards -Cookies
Cookies =Sessionabhängige Daten =kein Caching
keine Cookies verwenden
Cookies an bestimmte Domain oder Pfad binden
in VCL umgehen
snowflake | OpenTuesday - Jede Sekunde zählt: Webbeschleuniger Varnish im Einsatz, 01.10.2013 16
VCL
State Engine, wird zur Laufzeit zu C Code kompiliert
HTTP Headerregular Expressions
Eingriff in jedem Status möglich
snowflake | OpenTuesday - Jede Sekunde zählt: Webbeschleuniger Varnish im Einsatz, 01.10.2013 17
VCL - Beispiele
sub vcl_recv {# do not cache TYPO3 BE User requests (Preview)if (req.http.Cookie ~ "be_typo_user" || req.url ~ "^/typo3/") {
return (pass);}
}
sub vcl_fetch {# Cache only GET or HEAD Requestsif (req.request != "GET" && req.request != "HEAD") {
return (pass);}
# Cache static Pagesif (beresp.http.TYPO3-Pid && beresp.http.Pragma == "public") {
unset beresp.http.Set-Cookie;return (deliver);
}}
snowflake | OpenTuesday - Jede Sekunde zählt: Webbeschleuniger Varnish im Einsatz, 01.10.2013 18
VCLBackend DirectorProbes
backend default {.host = "10.10.10.10";.probe = {
.url = "/status.php";
.interval = 5s;
.timeout = 1s;
.window = 5;
.threshold = 3;}
}
director b2 random {{
.backend = b1;
.weight = 1;}{
.backend = b1;
.weight = 7;}
}
snowflake | OpenTuesday - Jede Sekunde zählt: Webbeschleuniger Varnish im Einsatz, 01.10.2013 19
VCL Hashing
sub vcl_hash {hash_data(server.ip);hash_data(req.url);
# Additional hashes on / only# used for server-side Browser/Language Handlingif (req.url ~ "^/$") {
# User-Agent (normalized in vcl_recv)hash_data(req.http.User-Agent);
# Accept-Language (normalized in vcl_recv)hash_data(req.http.Accept-Language);
}
return (hash);}
snowflake | OpenTuesday - Jede Sekunde zählt: Webbeschleuniger Varnish im Einsatz, 01.10.2013 20
VCLCookie Handling
sub vcl_recv {if (req.http.Cookie) {
# throw away Google Analytics Cookiesset req.http.Cookie = regsuball(req.http.Cookie, "(^|; ) *__utm[a-z]=[^;]+;? *", "\1");
# throw away Client related Cookiesset req.http.Cookie = regsuball(req.http.Cookie, "(^|; ) *client_[0-9a-zA-Z_]+=[^;]+;? *", "\1");
# throw away eID related Cookies on all non-eID related Requestif (!req.url ~ "(\?|&)eID=[0-9a-zA-Z_-]+") {
set req.http.Cookie = regsuball(req.http.Cookie, "(^|; ) *eID_[0-9a-zA-Z_]+=[^;]+;? *", "\1");}
if (req.http.Cookie == "") {remove req.http.Cookie;
}}
}
snowflake | OpenTuesday - Jede Sekunde zählt: Webbeschleuniger Varnish im Einsatz, 01.10.2013 21
VCLGrace Mode
sub vcl_recv {set req.grace = 6h;
}
sub vcl_fetch {set beresp.grace = 6h;
}
snowflake | OpenTuesday - Jede Sekunde zählt: Webbeschleuniger Varnish im Einsatz, 01.10.2013 22
VCLSaint Mode
sub vcl_fetch {
if (beresp.status >= 500 && req.request != "POST") { set beresp.saintmode = 10s; return(restart);
}
}
snowflake | OpenTuesday - Jede Sekunde zählt: Webbeschleuniger Varnish im Einsatz, 01.10.2013 23
VCLCache Invalidation
sub vcl_recv {
if (req.request == "PURGE" && client.ip ~ purge) {return (lookup);
}if(req.http.Varnish-Ban-TYPO3-Pid) {
ban("obj.http.TYPO3-Pid == " + req.http.X-Header);}if (req.request == "REFRESH" && client.ip ~ purge) {
set req.request = "GET";set req.hash_always_miss = true;
}}
snowflake | OpenTuesday - Jede Sekunde zählt: Webbeschleuniger Varnish im Einsatz, 01.10.2013 24
Möglichkeiten
sauberes Backendwenig VCLCaching anhand HTTP Headerwenige - keine Ausnahmen
„schwieriges“ BackendHTTP Header in- konsistent„cache all but some“
keine Zeit, schnelle Implementation, Probleme lindern
Microcaching
Kombinationen
snowflake | OpenTuesday - Jede Sekunde zählt: Webbeschleuniger Varnish im Einsatz, 01.10.2013 25
Möglichkeiten10 bestbesuchte Seiten
Weitere, wichtige Seiten
Integration vornehmen, weitere Seiten später anpassen
Ziele setzen, Kompromisse eingehen
Herausforderung: für sich richtige Strategie fest-legen
snowflake | OpenTuesday - Jede Sekunde zählt: Webbeschleuniger Varnish im Einsatz, 01.10.2013 26
Logging shared Memorysehr mächtig,aber auch komplex
varnishstatvarnishtopvarnishlog
14 TxRequest POST 14 TxURL /index.php?eID=tx_portfolio_casestudy_list 14 TxProtocol HTTP/1.1 14 TxHeader Host: www.snowflake.ch 14 TxHeader UserAgent: Mozilla/5.0 (X11; U; Linux x86_64; enUS; rv:1.9.1.16) Gecko/20121207 Iceweasel/3.5.16 (like Firefox/3.5.16) 14 TxHeader Accept: application/json 14 TxHeader AcceptLanguage: enus,en;q=0.5 14 TxHeader AcceptCharset: ISO88591,utf8;q=0.7,*;q=0.7 14 TxHeader XRequestedWith: XMLHttpRequest 14 TxHeader XRequest: JSON 14 TxHeader ContentType: application/xwwwformurlencoded; charset=utf8 14 TxHeader Referer: http://www.snowflake.ch/referenzen/ 14 TxHeader ContentLength: 683 14 TxHeader Pragma: nocache 14 TxHeader CacheControl: nocache 14 TxHeader XForwardedFor: 2a04:503:0:102:218:51ff:fece:60ac 14 TxHeader XVarnish: 1755445627
7+11:30:12Hitrate ratio: 10 100 272Hitrate avg: 0.7762 0.8143 0.8362
3014567 9.98 4.66 client_conn Client connections accepted 6787583 10.98 10.50 client_req Client requests received 5978620 8.98 9.25 cache_hit Cache hits 721061 1.00 1.12 cache_miss Cache misses 46086 0.00 0.07 backend_conn Backend conn. success 923 0.00 0.00 backend_unhealthy Backend conn. not attempted 57 0.00 0.00 backend_fail Backend conn. failures 795413 2.00 1.23 backend_reuse Backend conn. reuses 24213 0.00 0.04 backend_toolate Backend conn. was closed 819658 2.00 1.27 backend_recycle Backend conn. recycles 49 0.00 0.00 backend_retry Backend conn. retry 4 0.00 0.00 fetch_head Fetch head 235244 0.00 0.36 fetch_length Fetch with Length 604798 2.00 0.94 fetch_chunked Fetch chunked 1095 0.00 0.00 fetch_close Fetch wanted close 3 0.00 0.00 fetch_failed Fetch failed 292 0.00 0.00 fetch_304 Fetch no body (304) 132 . . n_sess_mem N struct sess_mem 38 . . n_sess N struct sess 288452 . . n_object N struct object
snowflake | OpenTuesday - Jede Sekunde zählt: Webbeschleuniger Varnish im Einsatz, 01.10.2013 27
Debugging 3rd Party Tools VAC/VCSeigene Scripts, z.B. Nagios Check
# /usr/local/vzscripts/nagiosvarnish Varnish OK: Running client_conn: 3016042 client_req: 6791127 client_drop: 0 cache_hit: 5981866 cache_hitpass: 0 cache_miss: 721433 backend_fail: 57 n_object: 288193 n_wrk_failed: 0 n_wrk_drop: 0 n_lru_nuked: 0 uptime: 646467
snowflake | OpenTuesday - Jede Sekunde zählt: Webbeschleuniger Varnish im Einsatz, 01.10.2013 28
ModuleAdministration Console Custom Statistics Paywall
freie & kostenpflichtige Module
snowflake | OpenTuesday - Jede Sekunde zählt: Webbeschleuniger Varnish im Einsatz, 01.10.2013 29
VarnishAdministrationConsole
zentrales Kontrollzentrum echtzeit Grafiken
kontrolle mehrerer Server
snowflake | OpenTuesday - Jede Sekunde zählt: Webbeschleuniger Varnish im Einsatz, 01.10.2013 30
VarnishCustomStatistics echtzeit Daten
„Whats hot“
Ladezeiten
Cache hits/missVerursacher von Backend Hits
shared memory JSON API
snowflake | OpenTuesday - Jede Sekunde zählt: Webbeschleuniger Varnish im Einsatz, 01.10.2013 31
VarnishPaywall Zugriffskontrolle
Zeitungen MagazineIntranets
AbosMicropaymentMeteredusw.
snowflake | OpenTuesday - Jede Sekunde zählt: Webbeschleuniger Varnish im Einsatz, 01.10.2013 32
weitere ModuleMobile Device Detection API Acceleration Hashninja
weitere (freie und unfreie) unterhttps://www.varnish-cache.org/vmod
snowflake | OpenTuesday - Jede Sekunde zählt: Webbeschleuniger Varnish im Einsatz, 01.10.2013 33
Integrationen TYPO3 Magento Wordpress
weitere ...
snowflake | OpenTuesday - Jede Sekunde zählt: Webbeschleuniger Varnish im Einsatz, 01.10.2013 34
TYPO3 IntegrationKISS / minimalinvasiv
sendet Cache Infos in eigenem Header an Varnish
sendet TYPO3 Cache Kommandos an Varnish
Dokumentation & Code auf GitHubhttps://github.com/snowflakech/typo3-varnish
snowflake | OpenTuesday - Jede Sekunde zählt: Webbeschleuniger Varnish im Einsatz, 01.10.2013 35
snowflake & Varnish
Hosting und Integrations-partner in Deutschland, Österreich und der Schweiz
Betrieb, Implementation und Beratung
Attraktive Bundlepreise
snowflake | OpenTuesday - Jede Sekunde zählt: Webbeschleuniger Varnish im Einsatz, 01.10.2013 36
weitere Informationen
Communityhttps://www.varnish-cache.org/„varnish-misc“ Maillinglist
Kommerziellhttp://www.snowflake.ch/varnish/http://www.varnish-software.com/
nochmal sehen?https://speakerdeck.com/steinair
snowflake | OpenTuesday - Jede Sekunde zählt: Webbeschleuniger Varnish im Einsatz, 01.10.2013 37
Andri Steinersnowflake productions gmbhBruchstrasse 436003 Luzern
+41 58 680 32 [email protected]