Varnish in Five Acts(dev.theladders.com)
dev.theladders.com
Varnish in Five Acts
http://dev.theladders.com/2013/05/varnish-in-five-acts/
24 comments
1 for each service. If we need to scale beyond one per service, I plan on doing sharing across varnishes based on url so we don't have to propagate bans.
What did you use to generate those graphs? Love 'em, have to know.
Statsd is awesome. http://codeascraft.etsy.com/2011/02/15/measure-anything-meas...
Graphite
Varnish is pretty awesome, but gets complicated when you have user-specific content. You can use things like edge-side includes and such, but it becomes more than plug and play at that point.
For a lot of sites, either using ESIs or including dynamic content via AJAX is a fairly simple solution that still leaves you with the benefits of caching.
For light page customizability like Hello Username. I will include the username in a browser cookie and use some JavaScript to insert it into the page. This way I can still use Varnish to serve most pages.
to make sure I understand, you meant it becomes more plug and play when you use ESI?
I believe he is saying it becomes less plug and play. By saying "it becomes more than plug and play at that point," he means it becomes more effort than plug and play.
That's my read on it, anyway. It always gets dicey interpreting the intent of others :)
That's my read on it, anyway. It always gets dicey interpreting the intent of others :)
Correct, it "becomes more complicated" is what I meant.
ah yes, that makes sense.
thanks.
thanks.
[deleted]
what's up with the /donjohnson/pulse url?
A reference to Don Johnson's terrible "Hearbeat" song from the 80s?
Has anyone found a decent Varnish plugin for Sublime Text/Textmate? There's this -- https://github.com/zephirworks/Varnish.tmbundle -- but it hasn't been updated in a couple years and it fails for moderately complex configs.
The Python plugin works reasonably well for plain VCL syntax highlighting.
The Python plugin works reasonably well for plain VCL syntax highlighting.
need to write me some pygments-vcl for vcl syntax highlighting in octopress and elsewhere.
We eventually abandoned Varnish because the purging was too far from our application logic. nginx serves static content just as fast as Varnish does, and so getting our application to write static HTML files that were redirected to via nginx was just as quick as Varnish but easier to purge when needed.
This is what we did at TaskRabbit, and here's our rails midleware to do it: https://github.com/taskrabbit/storehouse
We started off with our own toolkit for purging domains after deploys: https://github.com/robmiller/Varnish-Toolkit
But yeah, it just got a bit painful after a while.
But yeah, it just got a bit painful after a while.
I do not think that he should overwrite vcl_hash. By default Varnish caches by the request host and not the backend host?
Here is the default:
sub vcl_hash { hash_data(req.url); if (req.http.host) { hash_data(req.http.host); } else { hash_data(server.ip); } return (hash); }
Here is the default:
sub vcl_hash { hash_data(req.url); if (req.http.host) { hash_data(req.http.host); } else { hash_data(server.ip); } return (hash); }
it caches by host. this would allow you to serve multiple sites through it like:
example.com/foo
and
another.com/foo
without a cache collision.
we don't care about the host as everything is of the same entity service type.
example.com/foo
and
another.com/foo
without a cache collision.
we don't care about the host as everything is of the same entity service type.
I must have scanned the blog post too quickly. Thanks for the clarification.
Do you have just 1 varnish instance or two?
I never did fully solve the ban propagation problem when running multiple redundant varnish instances.