31
Make your website fly using Varnish Fabrizio Branca T3DD12

T3DD12 Caching with Varnish

  • Upload
    aoe

  • View
    2.403

  • Download
    1

Embed Size (px)

Citation preview

Page 1: T3DD12 Caching with Varnish

Make your

website fly

using Varnish Fabrizio Branca

T3DD12

Page 2: T3DD12 Caching with Varnish

System Developer

AOE media

Wiesbaden

TYPO3 & Magento

Twitter: @fbrnc

Blog: http://www.fabrizio-branca.de

Fabrizio Branca

Page 3: T3DD12 Caching with Varnish

• Who has any experience with Varnish?

• Who has a production site using Varnish?

• Who has played around with Varnish?

• Who has experience with any other

reverse proxy solution?

You?!

Page 4: T3DD12 Caching with Varnish

1m visitors in 24h 5000 concurrent users

Page 5: T3DD12 Caching with Varnish

Secret ingredient:

Varnish http://www.flickr.com/photos/judybaxter/8155091/

Page 6: T3DD12 Caching with Varnish

Reverse proxy caching

Browser TYPO3 (Apache + PHP + Mysql)

Request

Response

Page 7: T3DD12 Caching with Varnish

Reverse proxy caching

Browser TYPO3 (Apache + PHP + Mysql)

Varnish

Page 8: T3DD12 Caching with Varnish

Reverse proxy caching

Browser Varnish Nginx TYPO3 (Apache + PHP + Mysql)

- SSL termination - (Compression)

Page 9: T3DD12 Caching with Varnish

Reverse proxy caching

Browser Varnish Nginx TYPO3 (Apache + PHP + Mysql)

Page 10: T3DD12 Caching with Varnish

Varnish

HTTP Accelerator

Caching Reverse Proxy

Load Balancer

Failover system

„Varnish makes websites fly“

Page 11: T3DD12 Caching with Varnish

• Created by Poul-Henning Kamp

• Varnish Configuration Language (VCL)

– DSL, will be translated into C code and compiled

• Varnish uses thread and memory management of the operation system

• Additional tools: varnishtop, varnishlog,…

• Online-Documentation: http://www.varnish-cache.org/docs/2.1/

Varnish

Page 12: T3DD12 Caching with Varnish

Stability

Page 13: T3DD12 Caching with Varnish

Efficiency

Page 14: T3DD12 Caching with Varnish

CPU load

Page 15: T3DD12 Caching with Varnish

Speed

Page 16: T3DD12 Caching with Varnish

• In Ubuntu: sudo apt-get install varnish sudo vi /etc/default/varnish START=yes sudo /etc/init.d varnish start

• Will be started automatically on boot

• Listens to port 6081 by default

• Uses 127.0.0.1:8080 as a backend by default

• /etc/varnish/default.vcl

Installation

Page 17: T3DD12 Caching with Varnish

Setup

Varnish Varnish

Load Balancer

Amazon ELB F5 Varnish

TYPO3 backend TYPO3 frontends

Page 18: T3DD12 Caching with Varnish

Nginx, Varnish, Apache setup

Page 19: T3DD12 Caching with Varnish

Request Lifecycle (simplified)

Complete workflow: http://www.varnish-cache.org/trac/wiki/VCLExampleDefault

Page 20: T3DD12 Caching with Varnish

• Vary: User-Agent

(also implicitly set e.g. SetEnvIf)

Pitfalls

Page 21: T3DD12 Caching with Varnish

Tools: Varnishhist

Page 22: T3DD12 Caching with Varnish

• Restart: Flushes complete cache

• Reload: Reads VCL without flushing cache

Restart / Reload

Page 23: T3DD12 Caching with Varnish

Benchmarks

TYPO3 without cache

3,45 Pages/Second

10,72 Pages/Second

855,78 Pages/Second

TYPO3 with cache

TYPO3 with Varnish

Page 24: T3DD12 Caching with Varnish

• config.sendCacheHeaders = 1

• The conditions for allowing client caching are: – page was cached

– No *_INT or *_EXT objects were on the page (eg. USER_INT)

– No frontend user is logged in

– No backend user is logged in

• If these conditions are met, the headers sent are: – Last-Modified [SYS_LASTCHANGED of page id]

– Expires [expire time of page cache]

– Etag [md5 of content]

– Cache-Control: max-age: [seconds til expiretime]

– Pragma: public

Sending correct headers

Page 25: T3DD12 Caching with Varnish

• http://forge.typo3.org/projects/show/extens

ion-cacheinfo

EXT:cacheinfo

Page 26: T3DD12 Caching with Varnish

• http://forge.typo3.org/projects/show/extens

ion-purge

• Configuration in VCL

• Access protect

• Purge using Shift+Reload

Purging

Page 27: T3DD12 Caching with Varnish

Punching Holes…

http://www.flickr.com/photos/stevendepolo/3053981107/lightbox/

Page 28: T3DD12 Caching with Varnish

Punching holes

ESI AJAX Cookie /

Client storage

Page 29: T3DD12 Caching with Varnish

• Different lifetimes for clients and Varnish

• Cache status codes > 400

• Redirects

• Protect the backend!

Tuning

Page 31: T3DD12 Caching with Varnish

Questions?

Mail: [email protected]

Twitter: @fbrnc

Blog: http://www.fabrizio-branca.de