Is it possible to run varnish with both memory and disk storage?

Use the malloc method. It will try to put everything in RAM and the kernel will swap it out if needed. This way you are using memory and disk together.

At the same time file performs much better than malloc when you start hitting disk. For more info, see:

  • The Storage Backends section of the Tuning chapter of the Varnish Book
  • This blog post on "Varnish best practices" (from January 2010)

You need to name storage respectively as follows and in vcl you specify which backend storage you want to use with beresp.storage = storage_name. .

Varnish 3.* process options

DAEMON_OPTS="-a :80 \
             -T localhost:6082 \
             -f /etc/varnish/default.vcl \
             -S /etc/varnish/secret \
             -s foo=malloc,512m \
             -s bar=file,/var/lib/varnish/varnish_storage.bin,512m"

vcl v3

sub vcl_fetch {
    if (req.url ~ "html") {
       set beresp.storage = "foo";
       set beresp.http.x-storage = "foo";
    } else {
       set beresp.storage = "bar";
       set beresp.http.x-storage = "bar";
    }
    return (deliver);
}

For Varnish v4, you can follow the official blog post's instruction https://info.varnish-software.com/blog/partitioning-your-varnish-cache

Tags:

Varnish