Varnish 可以自动确定应该使用哪种存储介质来缓存对象吗?

Varnish 可以自动确定应该使用哪种存储介质来缓存对象吗?

例如,我有一个非常慢且过时的后端提供商,请求通常需要几十秒。我们还有一台内存适中且存储空间大的机器。理想情况下,我想使用两个都内存和存储以满足请求。

我发现:

https://info.varnish-software.com/blog/partitioning-your-varnish-cache

但这似乎意味着我必须手动在两者之间分割数据,这看起来很有挑战性?

答案1

正如 Gerard H. Pille 的评论所指出的,操作系统的页面缓存将确保热数据存储在内存中。

文件装卸

就 Varnish 而言,这意味着您可以使用file装卸工来存储对象。

以下是如何配置它的方法:

varnishd -s file,/var/lib/varnish/storage,250G

上面的例子中我只关注了-s参数。实际上, 会用到很多参数varnihsd

结合 malloc 和 file

如果你有非常明确的迹象表明哪些内容只会存在于内存中,你可以定义多个装卸工人,如下图所示:

varnishd -s disk=file,/var/lib/varnish/storage,250G -s memory=malloc,32G

虚拟专用网络,然后您可以执行以下操作:

sub backend_response {
    if(beresp.http.Content-Type ~ "^(image|video)/") {
        set beresp.storage = "file";
    } else {
        set beresp.storage = "memory";
    }
}

文件装卸限制

码头工人file有能力缓存大量数据。主要问题是随着时间的推移,磁盘容易出现碎片。

我们已经看到file基于的设置在加班时表现非常糟糕,主要是由于碎片化。

另一个缺点是操作系统的页面缓存需要猜测哪些内容应该适合内存。

最后,虽然磁盘是持久的,但file装卸工不是:只要你重新启动缓存的内容已消失。

海量存储引擎

Varnish 软件,我们开发了海量存储引擎,这是一种先进的码头工人解决file已存在的问题。

https://docs.varnish-software.com/varnish-cache-plus/features/mse/了解更多信息。

免责声明:mse是一家专有的装卸公司,属于清漆企业。它需要商业许可证,但有官方机器映像AWSAzure&地理信息中心您可以按小时付费,而无需预先购买许可证密钥。

微分方程可配置性更强,设计时考虑到了反碎片化。内存缓存不依赖于操作系统的页面缓存,性能优于mallocVarnish 中的标准实现。

持久层可以根据您的需要进行定制,基于多个存储位置。还有一个模块允许您从 VCL 中选择特定的存储设备(请参阅https://docs.varnish-software.com/varnish-cache-plus/vmods/mse/)。

最后,内存调节器该功能会根据 Varnish 其他部分的内存需求自动调整内存大小。请参阅https://docs.varnish-software.com/varnish-cache-plus/features/mse/memory_governor/

相关内容