我们在 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 工作线程可能会死亡,但它会立即重新启动。当一切正常时,这可能会被忽视,但随着(计划的)后端停机时间,这可能会非常不方便。