是否可以同时使用内存和磁盘存储来运行清漆?


8

我对最大化变化缓慢的网站的缓存命中率和效率很感兴趣。虚拟主机没有大量的RAM,但是我想使用可用于清漆的东西,但是如果没有足够的内存,可以使用磁盘缓存。

是否可以使用单个清漆实例来做到这一点?该文档描述了“文件”和“malloc的”存储为不同的选项。

Answers:


9

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

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


谢谢,这有效。我想我将仅使用具有可用RAM的malloc方法,并依靠服务器进行磁盘缓存(例如apache mod_disk_cache)。
user67641'2

1
有没有办法将Varnish插入其他基于内存的后端?
CMCDragonkai 2014年

1
请注意,您实际上可以做相反的事情:仅使用file后端,并依赖Linux的磁盘缓存,该磁盘默认情况下使用所有可用内存。是的,您总是在写磁盘(如果不使用SSD可能会出现问题),但是当多次读取相同文件时,您只会从内存中读取很多内容。
本杰明

7

您需要分别命名存储如下,并在vcl中指定要与哪个后端存储一起使用beresp.storage = storage_name。。

清漆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"

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

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


什么是if (req.url ~ "html")条件吗?我认为OP希望对所有请求以最有效的方式使用两个存储后端。
kontextify
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.