【问题标题】:How to solve cache slamming / stampeding case with Varnish?如何使用 Varnish 解决缓存撞击/踩踏案例?
【发布时间】:2017-07-11 22:06:09
【问题描述】:

我正在考虑使用 Varnish 作为我们基础架构的缓存解决方案,我想问一下 Varnish 内部是否有一种机制可以解决cache slamming / stampeding problem

【问题讨论】:

    标签: caching varnish


    【解决方案1】:

    从 Varnish 4.0 开始,您可以在使用宽限期 (https://info.varnish-software.com/blog/grace-varnish-4-stale-while-revalidate-semantics-varnish) 重新验证时提供陈旧的服务。

    Varnish 将异步从后端获取响应,并在其宽限期内提供过时的缓存内容。

    【讨论】:

    • 它真的能防止缓存冲击吗?例如,如果有 10 个用户正在请求相同的资源,而哪个缓存刚刚过期,那么有多少这样的异步刷新请求会到达后端?
    • 通过查看源代码(或通过邮件列表)进行检查,但我认为响应只是一个请求。在 varnish 4 之前,也只有一个请求。其他请求被卡住,等待第一个刷新缓存。
    • 我同意@BenjaminBaumann 的观点,对我来说,在生成请求时只有一个请求会发送到后端。
    • 这里的文档似乎表明如果对象过期,则 bg fetch 是并行完成的。 github.com/varnishcache/varnish-cache/blob/…我一直在寻找源代码中的信息。
    • @BenjaminBaumann 谢谢。如果你发现了什么,请给我打电话。
    猜你喜欢
    • 1970-01-01
    • 2019-12-26
    • 1970-01-01
    • 2012-10-14
    • 1970-01-01
    • 1970-01-01
    • 2011-03-01
    • 2015-05-25
    • 1970-01-01
    相关资源
    最近更新 更多