我们使用Squid缓存从我们的Web服务器卸载流量,即.它被设置为反向代理,在它们到达我们的Web服务器之前响应入站请求.
当我们对同一个不在缓存中的请求的并发请求进行blitzed时,Squid会将所有请求代理到我们的Web("origin")服务器.对我们来说,这种行为并不理想:我们的原始服务器陷入困境,试图同时满足N个相同的请求.
相反,我们希望第一个请求代理到源服务器,其余的请求在Squid层排队,然后当源服务器响应第一个请求时,Squid都会完成所有请求.
有谁知道如何配置Squid这样做?
我们已经多次阅读了文档,并通过网络搜索了主题,但无法弄清楚如何去做.
我们也使用Akamai,有趣的是,这是它的默认行为.(但是,Akamai拥有如此多的节点,即使启用了Akamai的超级节点功能,我们仍会在某些流量峰值情况下看到大量并发请求.)
对于某些其他缓存,此行为显然是可配置的,例如.Ehcache文档提供了选项"并发缓存未命中:缓存未命中将导致缓存过滤器上游的过滤器链被处理.为了避免线程请求相同的密钥执行无用的重复工作,这些线程阻塞第一个线程. "
有些人将此行为称为"阻塞缓存",因为后续并发请求会阻止第一个请求,直到它完成或超时.
看看我的菜鸟问题!
奥利弗