我使用的是Varnish 3.0.3(本文最新),或多或less地使用默认安装,使用以下内容进行存储:
# # 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}" #
大部分可以caching的页面都会有很长的TTL。 我正在使用的网站是巨大的,并有数百万页,不能适应上面列出的存储大小(4 GB)。
设置的问题:
假设整个存储空间已满,高速caching中的任何内容都没有过期(我的TTL是caching中每个项目的两周)。
我假设禁令潜伏者在这里是无用的,因为它只会删除过期的项目,而没有任何过期。
问题:
鉴于上述情况,当额外请求进入caching中尚未存在的内容时,Varnish会发生什么情况? 不pipe这些项目的TTL,Varnish是否尝试从caching中删除较旧的项目? 清漆会崩溃吗? 挂?
如果清漆不处理这种情况,有什么我可以做的configuration它来更好地处理情况? (我明显可以降低caching中项目的TTL,但是我想知道是否还有其他build议)。
我在这种情况下看到有效的清漆停止响应请求。 在发生这种情况的时候,我并不是在内存或CPU上。
谢谢。
跟进:
我也看到这个post
这指向我
这似乎表明一切“刚刚发生”…但它看起来实际上发送一个PURGE请求的URL,这可能需要添加适当的东西到您的VCL(请参阅https://www.varnish-cache.org/ docs / 3.0 / tutorial / purging.html )
如果能解决这个问题,我会试试看,并会采取后续行动。
根据你的设置,你似乎使用磁盘来存储清漆caching。
除非你有一个很好的理由(比如sinni800),否则不build议这样做。
尝试使用RAM来存储varnishcaching(“malloc”而不是“file”)并重现问题。