我正在使用 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}"
#
Run Code Online (Sandbox Code Playgroud)
大多数可以缓存的页面都有很长的 TTL。我正在使用的站点很大,有数百万个页面,这不可能适合上面列出的存储大小 (4 GB)。
设置问题:
让我们假设整个存储空间已满,并且缓存中的任何内容都没有过期(我的 TTL 是缓存中每个项目的 2 周)。
我假设 Ban Lurker 在这里没用,因为它只会删除过期的项目,而没有过期的项目。
问题:
鉴于上述情况,当额外的请求进入缓存中尚未存在的内容时,Varnish 会发生什么情况?无论这些项目的 TTL 是多少,Varnish 是否会尝试从缓存中删除旧项目?清漆会崩溃吗?悬挂?
如果 Varnish 不处理场景,我可以做些什么来配置它以更好地处理场景?(我显然可以降低缓存中项目的 TTL,但我想知道是否有任何其他建议)。
在这种情况下,我看到 Varnish 有效地停止响应请求。在发生这种情况时,我并没有耗尽内存或 CPU 的内存。
谢谢。
跟进:
我也看到了这个帖子
这使我指向
这似乎表明一切“刚刚发生”......但看起来它实际上发送了一个针对 URL 的 PURGE 请求,这可能需要向您的 VCL 添加适当的内容(请参阅https://www.varnish-cache.org/ docs/3.0/tutorial/purging.html )
我将尝试这样做,如果解决了问题,我会跟进。
归档时间: |
|
查看次数: |
5206 次 |
最近记录: |