我对最大程度提高缓存命中率和效率感兴趣,因为网站变化缓慢。虚拟主机没有大量的 RAM,但我想使用 varnish 可用的内存,但如果内存不足,则返回到磁盘缓存。
是否可以使用单个 Varnish 实例来实现这一点?文档将“文件”和“malloc”存储描述为不同的选项。
答案1
使用该malloc
方法。它会尝试将所有内容放入 RAM 中,如果需要,内核会将其交换出去。这样,您就可以同时使用内存和磁盘。
同时,性能比开始访问磁盘时file
要好得多。有关更多信息,请参阅:malloc
- Varnish Book 的“调优”一章的“存储后端”部分
- 这篇关于“Varnish 最佳实践”的博客文章(自 2010 年 1 月起)
答案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