Varnish and Drupal- Accelerating Website Performance and Flexibility with Varnish Cache
-
Upload
acquia -
Category
Technology
-
view
4.815 -
download
3
description
Transcript of Varnish and Drupal- Accelerating Website Performance and Flexibility with Varnish Cache
Webinar Audio OptionsListen to streaming audio via your computer’s audio– WebEx Audio Broadcast pop-up
Unable to listen via your computer’s audio– Request phone access
Technical support– US & Canada 866-229-3239– International support 408-435-
7088
International phone access numbers: – http://support.webex.com/
support/phone-numbers.html
Introduction
Matt Ackley– Marketing Team– @mbackley
Varnish + DrupalAccelerating Drupal Performance
and Flexibility with Varnish Cache
Varnish + DrupalAccelerating Drupal Performance
and Flexibility with Varnish Cache
Kurt Gray
Hosting Engineer
Acquia Inc.
@kurt
Kristian Lyngstøl
Software Engineer
Varnish Software
@kristian
Matt Ackley
Marketing
Acquia Inc.
@mbackley
Webinar Audio OptionsListen to streaming audio via your computer’s audio
– WebEx Audio Broadcast pop-up
Unable to listen via your computer’s audio
– Request phone access
Technical support– US & Canada 866-229-3239– International support 408-435-
7088
– International phone access numbers: http://support.webex.com/support/phone-numbers.html
Housekeeping
Today’s webinar is being recorded. Slides and recording will be posted in next 48 hours at:
–http://acquia.com/resources/recorded_webinars
Submit questions via Q&A Tab in WebEx, we’ll answer as many as we can
–Give it a try & tell us where you joining from today
Upcoming Events
Cities– New York City, November
9th
– Washington DC, November 18th
– Chicago, November 30th
– San Francisco, December 2nd
Target Audience– Senior IT & Marketing
professionals
Companies Speaking
– New York Stock Exchange
– tmg-emedia (Time Out)
– New York State Senate
– The 451 Group
– Gilbane Group
– VML
– Taunton Press
– Zagat Survey
– Examiner.comRegister at: http://revolution2010.acquia.com/
Recently Recorded Webinars
Client Advisor Webinar - Drupal Staging and Deployment Best Practices
Going from Zero to 60 in Drupal with Acquia
Watch Today at –
http://acquia.com/resources/recorded_webinars
Introduction
Kristian Lyngstol– Varnish Software– @kristian
© 2010 Acquia, Inc.
What is Varnish?
• Reverse proxy cache server• ... and more (load balancer, filter, director, ...)• Open Source (BSD), commercially supported • Typically in front of a LAMP stack:
© 2010 Acquia, Inc.
Example Benchmarks: pages/second
• Typical HA Drupal stack: 200 Drupal pages/minute• ... with Varnish: 2500 Drupal pages/second• ... using smaller backend hardware!
© 2010 Acquia, Inc.
Example Benchmarks: Page latency
• Varnish also improves response times:
© 2010 Acquia, Inc.
Use cases for Varnish
• Typical: Reverse proxy cache in front LAMP stack• As a web request load balancer• ... or behind a load balancer• Behind a CDN• Next to a CDN• As a CDN• With other proxy caches• ...and more!
© 2010 Acquia, Inc.
What does Varnish do?• Caches backend responses, delivers from cache
© 2010 Acquia, Inc.
How does it work?• Varnish stores a cache entry for each Host + URL
© 2010 Acquia, Inc.
What can be cached in Varnish?• Drupal pages for anonymous users• Static content: images, js, css• Other types of static or generated content
What should NOT be cached in Varnish?• Responses to POST requests• Responses with a Set-Cookie: header • User-specific content (logged-in page requests)• Very large media files (> 100MB)• Has a Cache-Control: no-cache header
All cache policies can be tuned using VCL
© 2010 Acquia, Inc.
How long will it be cached in Varnish?• Response header: Cache-Control: max-age=300• If no Cache-Control specified then Varnish uses
the Expires date, if specified • If no Cache-Control or Expires header then
uses Varnish's default TTL, 2 minutes (adjustable)
All cache policies can be tuned using VCL ...
© 2010 Acquia, Inc.
VCL: Varnish Configuration Language• Extend and modify Varnish cache policies• Add behaviors during each phase of delivery: recv, hash, fetch, hit, miss, deliver, ...
sub vcl_recv {
# direct image requests to image servers if (req.url ~ "(jpg|gif|png)") { set req.backend = image_servers; } }
© 2010 Acquia, Inc.
VCL: Varnish Configuration Language• Add/remove/change request or response headers
sub vcl_deliver {
# Add a HIT/MISS header to the response if (obj.hits > 0) { set resp.http.X-Cache = "HIT"; set resp.http.X-Cache-Hits = obj.hits; } else { set resp.http.X-Cache = "MISS"; } }
© 2010 Acquia, Inc.
Other VCL capabilities
• Add/remove/change HTTP headers• Redirects based on request parameters• Rewrite requests• Retry failed requests• Synthesize direct responses • Saint and Grace: Deliver cached content when
backend is unresponsive• ACLs: Network-address filtering• Request filtering• ESI: Separate cache entries and separate cache
policies for each part of a document• Inline C code (eg. redirects based on GeoIP)
© 2010 Acquia, Inc.
Varnish realtime tools
• varnishstat: realtime status and performance metrics
© 2010 Acquia, Inc.
Varnish realtime tools
• varnishhist: live frequency plot of response times
© 2010 Acquia, Inc.
Varnish realtime tools
• Varnish CLI: live admin capabilities
© 2010 Acquia, Inc.
Varnish realtime tools
• varnishtop: live list of hottest files
© 2010 Acquia, Inc.
Varnish realtime tools
• varnishtop: analyze incoming HTTP headers
Introduction
Kurt Gray– Hosting Engineer– @kurt
© 2010 Acquia, Inc.
Varnish and Drupal: Cache variances
• Drupal emits Vary: Cookie,Accept-Encoding• Cookie: Avoids cache collisions between users• Accept-Encoding: maintain separate cache
entries for compressed content (gzip, deflate) vs. uncompressed content
© 2010 Acquia, Inc.
Varnish and Drupal: VCL snippets
sub vcl_recv {
# Normalize the Accept-Encoding header if (req.http.Accept-Encoding) { if (req.http.Accept-Encoding ~ "gzip") { set req.http.Accept-Encoding = "gzip"; } elsif (req.http.Accept-Encoding ~ "deflate") { set req.http.Accept-Encoding = "deflate"; } else { # unkown algorithm remove req.http.Accept-Encoding; } } }
© 2010 Acquia, Inc.
Varnish and Drupal: VCL snippets
sub vcl_recv {
# Don't check cache for logged-in users if(req.http.cookie ~ "SESS") { return(pass); }
# Cookie Bypass module: Don't check cache for anon # user who POSTed content less than 10 minutes ago. if(req.http.cookie ~ "NO_CACHE") { return(pass); } }
© 2010 Acquia, Inc.
Varnish and Drupal: VCL snippets
sub vcl_recv {
# Don't check cache for GET /cron.php if(req.url ~ "^/cron.php") { return(pass); } }
© 2010 Acquia, Inc.
Varnish and Drupal: VCL snippets
sub vcl_fetch {
# Don't cache if response has explicit no-cache headers if (beresp.http.Pragma ~ "no-cache" || beresp.http.Cache-Control ~ "no-cache" || beresp.http.Cache-Control ~ "private") { return(pass); } }
© 2010 Acquia, Inc.
Varnish and Pressflow Drupal, D7
• Pressflow = Drupal w/ many performance tweaks• Allows Varnish to cache and deliver Drupal page
requests for anonymous visitors• ...because Pressflow doesn't emit "lazy sessions" • No SESS cookies for anonymous visitors• Drupal 7 has same key features
© 2010 Acquia, Inc.
Controlling cache expiration times
• Drupal Admin > Performance pageo Agressive or External cachingo Minimum Page Lifetime = max-age
• Active purging: use Drupal Varnish module• Static content: See the mod_expires directives in
Drupal's .htaccess file• If no Cache-Control or Expires headers: Uses
Varnish's default TTL (2 minutes)
© 2010 Acquia, Inc.
Varnish and Acquia Hosting
• All Acquia-hosted sites benefit from Varnish• Pressflow sites on Acquia-hosting get most benefit• Fully managed HA environment: No setup, no fuss• Reduces backend server size requirments• Excellent load test results
Do you love working with Drupal?
If so, Acquia is hiring in North America & Europe:–Engineering & design–Client advisors and consulting–Inside sales
Check out openings athttp://acquia.com/careers
QuestionsFor more information, visit:– http://acquia.com
– http://twitter.com/acquia
– http://twitter.com/drupalgardens
– http://twitter.com/drupalcommons
– http://acquia.com/facebook
Contact us:– [email protected]
– 888.9.ACQUIA
Try Drupal 7 today, for free – Sign up at http://drupalgardens.com
• Sign up for the Drupal Business Summit– http://revolution2010.acquia.com/
Recording of today’s event and slideswill be posted at:
http://acquia.com/resources/recorded_webinars