Varnish如何处理存储空间不足?


9

我使用的是Varnish 3.0.3(撰写本文时为最新版本),带有或多或少的默认安装,并使用以下内容进行存储:

# # Cache file location
VARNISH_STORAGE_FILE=/var/lib/varnish/varnish_storage.bin
#
# # Cache file size: in bytes, optionally using k / M / G / T suffix,
# # or in percentage of available disk space using the % suffix.
VARNISH_STORAGE_SIZE=4000M
#
# # Backend storage specification
VARNISH_STORAGE="file,${VARNISH_STORAGE_FILE},${VARNISH_STORAGE_SIZE}"
#

可以缓存的大多数页面将具有非常长的TTL。我正在使用的网站很大,并且有数百万个页面,可能无法满足上述存储容量(4 GB)。

设置问题:

  • 假设整个存储空间已满,并且缓存中的任何内容都没有过期(我的TTL是2周,则缓存中的每个项目都为2周)。

  • 我假设Ban Lurker在这里没有用,因为它只会删除过期的项目,而没有过期的项目。

问题:

  • 在上述情况下,当针对缓存中尚未存在的内容提出其他请求时,Varnish会发生什么?无论这些项目的TTL是多少,Varnish是否会尝试从缓存中删除较旧的项目?清漆会崩溃吗?挂?

  • 如果Varnish无法处理该方案,是否可以将其配置为更好地处理该方案?(我显然可以降低缓存中各项的TTL,但我想知道是否还有其他建议)。

我看到在这种情况下有效地Varnish停止响应请求。发生这种情况时,我的内存或CPU并没有耗尽。

谢谢。


跟进:

我也看到了这个帖子

指向我

似乎表明一切都“发生”了……但是看起来它实际上发送了对URL的PURGE请求,这可能需要向VCL中添加适当的内容(请参阅https://www.varnish-cache.org/ docs / 3.0 / tutorial / purging.html

我将尝试一下,如果可以解决问题,将进行后续跟踪。


3
就我们而言,我们也使用Varnish来缓存大量数据,具体来说,是一个包含约28百万个图像的图像存储库以及一个30 gig的Varnish文件。清漆填满了30个演出,一旦将新内容添加到缓存中,就会删除“最长时间未访问”的缓存条目。每个缓存条目都有一个与之关联的时间,它是最后一个访问时间戳。最后访问时间戳最低的条目进入。(顺便说一句:为什么我们要缓存图像!?因为HDD太慢而无法为它们提供服务,而SSD的一切费用都太高了)
sinni800 2013年

Answers:


1

根据您的设置,您似乎使用磁盘来存储清漆缓存。

除非您有充分的理由(例如sinni800),否则不建议这样做(出于性能考虑)。

尝试使用RAM存储清漆缓存(“ malloc”而不是“ file”),然后重现该问题。

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.