Architecture Squid处理并发缓存未命中

Architecture Squid处理并发缓存未命中,architecture,caching,cdn,squid,high-traffic,Architecture,Caching,Cdn,Squid,High Traffic,我们正在使用Squid缓存从我们的web服务器卸载流量,即,它被设置为一个反向代理,在入站请求到达我们的web服务器之前响应它们 当我们被不在缓存中的同一个请求的并发请求吓到时,Squid会将所有请求代理到我们的web(“源”)服务器。对我们来说,这种行为并不理想:我们的源服务器在试图同时满足N个相同的请求时陷入困境 相反,我们希望将第一个代理请求发送到源服务器,其余请求在Squid层排队,然后在源服务器响应第一个请求时,所有请求都由Squid完成 有人知道如何配置Squid来实现这一点吗 我们

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

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

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

有人知道如何配置Squid来实现这一点吗

我们已经多次阅读了文档,并对该主题进行了彻底的网络搜索,但不知道如何进行搜索

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

对于某些其他缓存,此行为显然是可配置的,例如,Ehcache文档提供了“并发缓存未命中:缓存未命中将导致缓存筛选器上游的筛选器链被处理。为了避免线程请求相同的密钥来做无用的重复工作,这些线程阻塞在第一个线程后面。”

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

谢谢你查看我的noob问题


Oliver

您正在寻找的是:

在2.6和2.7中提供,但在3.x中尚未提供

当缓存中存在过时的内容时,您可能也会在重新创建时对过时感兴趣:

谢谢你,马克!就是这样。此外,您的直觉是正确的,过时的,而重新验证也是我们更喜欢的行为,因此我们将对其进行研究,然后希望尝试一下!仍然不明白为什么人们会在评论中高兴地说谢谢,而只是简单地将其标记为正确会让每个人受益更多。如果您想知道如何配置类似的行为,请查看以下链接:&