是否可以使用内存和磁盘存储来运行 varnish ?

是否可以使用内存和磁盘存储来运行 varnish ?

我对最大程度提高缓存命中率和效率感兴趣,因为网站变化缓慢。虚拟主机没有大量的 RAM,但我想使用 varnish 可用的内存,但如果内存不足,则返回到磁盘缓存。

是否可以使用单个 Varnish 实例来实现这一点?文档将“文件”和“malloc”存储描述为不同的选项。

答案1

使用该malloc方法。它会尝试将所有内容放入 RAM 中,如果需要,内核会将其交换出去。这样,您就可以同时使用内存和磁盘。

同时,性能比开始访问磁盘时file要好得多。有关更多信息,请参阅:malloc

答案2

您需要分别按如下方式命名存储,并在 vcl 中指定要使用的后端存储beresp.storage = storage_name

Varnish 3.* 进程选项

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"

版本 3

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);
}

对于 Varnish v4,你可以按照官方博客文章的说明进行操作https://info.varnish-software.com/blog/partitioning-your-varnish-cache

相关内容