如何在后端长时间停机后保持 Varnish 缓存填充?

如何在后端长时间停机后保持 Varnish 缓存填充?

我们在 Amazon 的 Linux 上运行了 Varnish 3.0.2,它运行良好。大多数内容页面的 TTL 为 48 小时,而图像、PDF 等的 TTL 则更长。

这个周末我们关闭了后端进行维护,因此本周早些时候我将 ttl 增加到了 5 天。我曾假设缓存中的任何内容都会继续提供长达 5 天的服务,但令我们失望的是,我们今天varnishstat早上检查时发现缓存几乎完全是空的,而 varnish 正在提供“页面未找到”消息。

我知道这不是 Varnish 的设计初衷,但是为什么后端宕机时它会重置缓存?下次我该如何防止这种情况发生?

更新 2012-06-11:查看 /var/log/messages 后,我大约每 3 小时看到一次:

Jun  9 03:56:31 idea-varnish varnishd[1128]: Manager got SIGINT
Jun  9 03:56:33 idea-varnish varnishd[6708]: Platform: Linux,3.2.18-1.26.6.amzn1.x86_64,x86_64,-smalloc,-smalloc,-hcritbit
Jun  9 03:56:33 idea-varnish varnishd[6708]: child (6709) Started
Jun  9 03:56:33 idea-varnish varnishd[6708]: Child (6709) said Child starts

我猜这是服务器崩溃并清除了内存中的所有对象。我刚刚安装了 -debuginfo rpm,但不确定它是否真的会显示更多内容。

我认为我们可以在计划的停机时间内切换回基于磁盘的存储吗?或者像这样的崩溃会抹去这些吗?

答案1

varnish 进程是否可能重新启动?varnishstat 中有一个正常运行时间计数器。在某些情况下,varnish 工作线程可能会死亡,但它会立即重新启动。当一切正常时,这可能会被忽视,但随着(计划的)后端停机时间,这可能会非常不方便。

相关内容