Varnish如何处理用完存储?

我使用的是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中尚未存在的内容时,Varnish会发生什么情况? 不pipe这些项目的TTL,Varnish是否尝试从caching中删除较旧的项目? 清漆会崩溃吗? 挂?

  • 如果清漆不处理这种情况,有什么我可以做的configuration它来更好地处理情况? (我明显可以降低caching中项目的TTL,但是我想知道是否还有其他build议)。

我在这种情况下看到有效的清漆停止响应请求。 在发生这种情况的时候,我并不是在内存或CPU上。

谢谢。


跟进:

我也看到这个post

  • https://stackoverflow.com/questions/8016643/what-happens-when-varnish-cache-is-full

这指向我

  • https://www.varnish-cache.org/trac/wiki/ArchitectureLRU

这似乎表明一切“刚刚发生”…但它看起来实际上发送一个PURGE请求的URL,这可能需要添加适当的东西到您的VCL(请参阅https://www.varnish-cache.org/ docs / 3.0 / tutorial / purging.html )

如果能解决这个问题,我会试试看,并会采取后续行动。

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

除非你有一个很好的理由(比如sinni800),否则不build议这样做。

尝试使用RAM来存储varnishcaching(“malloc”而不是“file”)并重现问题。