我使用的是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年