【问题标题】:Squid handling of concurrent cache missesSquid 处理并发缓存未命中
【发布时间】:2010-04-09 15:50:54
【问题描述】:

我们正在使用 Squid 缓存从我们的 Web 服务器卸载流量,即。它被设置为一个反向代理,在入站请求到达我们的网络服务器之前对其进行响应。

当我们收到对不在缓存中的同一请求的并发请求时,Squid 会将所有请求代理到我们的 Web(“源”)服务器。对我们来说,这种行为并不理想:我们的原始服务器在试图同时满足 N 个相同的请求时陷入困境。

相反,我们希望将第一个请求代理到源服务器,其余请求在 Squid 层排队,然后在源服务器响应第一个请求时由 Squid 完成。

有谁知道如何配置 Squid 来做到这一点?

我们已多次阅读文档并在网络上彻底搜索了该主题,但不知道如何去做。

我们也使用 Akamai,有趣的是,这是它的默认行为。 (但是,Akamai 拥有如此多的节点,即使启用了 Akamai 的超级节点功能,我们仍然会在某些流量高峰场景中看到大量并发请求。)

这种行为显然可以为其他一些缓存配置,例如。 Ehcache 文档提供了选项“并发缓存未命中:缓存未命中将导致缓存过滤器上游的过滤器链被处理。为了避免线程请求相同的键来执行无用的重复工作,这些线程阻塞在第一个线程后面。 "

有些人将此行为称为“阻塞缓存”,因为后续并发请求会阻塞在第一个请求之后,直到它完成或超时。

感谢您查看我的菜鸟问题!

奥利弗

【问题讨论】:

    标签: architecture caching cdn squid high-traffic


    【解决方案1】:

    您正在寻找折叠转发: http://www.squid-cache.org/Versions/v2/2.7/cfgman/collapsed_forwarding.html

    在 2.6 和 2.7 中可用,但在 3.x 中还没有。

    当缓存中有一些东西过时,你可能也会对 stale-while-reavlidate 感兴趣: http://www.mnot.net/blog/2007/12/12/stale

    【讨论】:

    • 谢谢你,马克!就是这样。此外,您的直觉是正确的,即 stale-while-revalidate 也是我们更喜欢的一种行为,因此我们会对其进行一些研究,然后希望尝试一下!
    • 仍然不明白为什么人们乐于在评论中说谢谢,而只是将其标记为正确会使每个人都受益更多。
    • 如果您想知道如何配置 ATS 以获得类似的行为,请查看以下链接:Reducing Origin Server Requests & Collapsed Forwarding not work
    猜你喜欢
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-10
    • 2013-08-03
    相关资源
    最近更新 更多