Varnish 似乎没有使用我的“文件”存储配置

Varnish 似乎没有使用我的“文件”存储配置

我已将 Varnish 配置为使用文件存储。Varnish 似乎可以正常工作,但缓存似乎只是我指定大小的一小部分,而且我为存储指定的文件似乎尚未创建。

我一直在运行service varnish reload以在更改配置后重新启动服务。这样就够了吗?

运行varnishstat显示一个不断增加的MAIN.n_lru_nuked值,我认为这意味着它认为它已经用完了缓存空间SMA.s0.c_bytes(我相信这是存储后端的大小?)只有3.46G

有什么想法可以调试这个问题吗?我的配置没有被选中吗?

/etc/default/varnish 的配置部分

VARNISH_LISTEN_PORT=80
DAEMON_OPTS="-a :80 \
             -T localhost:6082 \
             -b s3.amazonaws.com:80 \
             -u varnish -g varnish \
             -S /etc/varnish/secret \
             -s disk=file,/var/lib/varnish/$INSTANCE/varnish_storage.bin,30G"

/etc/varnish/默认.vcl

vcl 4.0;

backend default {
    .host = "cdn.webampskins.org.s3.amazonaws.com";
    .port = "80";
}

sub vcl_recv {
    set req.http.Host = "cdn.webampskins.org.s3.amazonaws.com";
}

sub vcl_backend_response {
    set beresp.ttl = 3y;
    set beresp.storage_hint = "disk";
    # I've confirmed that in my response I see this header
    set beresp.http.x-storate = "disk";

}

sub vcl_deliver {
    # Empty
}

更新:

看来我的文件存储配置没有被选中:

~# varnishadm storage.list
Storage devices:
    storage.s0 = malloc
    storage.Transient = malloc

不确定为什么或如何调试这个问题。

答案1

如果您的操作系统使用系统化,不要用来/etc/default/varnish配置运行时参数。

请使用以下命令来编辑这些设置:

sudo systemctl edit varnish

完成编辑后,使用以下命令重新启动 Varnish:

sudo systemctl restart varnish

https://www.varnish-software.com/developers/quick-start/#through-the-systemctl-edit-command有关通过systemctl二进制文件管理 Varnish 的更多信息。

警告:我们强烈反对使用 stevedore file。虽然它允许您扩展缓存的大小(相对于内存),但它不提供任何持久性。这可能是您可以忍受的。

然而,根据我们的经验,file装卸工随着时间的推移很容易产生磁盘碎片。消除碎片的唯一方法是定期完全重启该varnishd过程。sudo systemctl restart varnish

相关内容