关于proxy_cache_lock_timeout讲解的疑惑

来源:8-5 缓存失效降低上游压力机制一-合并源请求

小毅Harry

2020-03-22

视频中老师举了一个5W请求同时缓存失效的例子,其中当第一个请求失效时,老师说剩余的49999个请求都会穿透nginx打到上游服务器,这里我比较疑惑啊。

按照老师的讲解,我感觉proxy_cache_lock做的是悲观锁,请求是一个一个的获取锁去执行,当获取到锁,才会再将请求转发到上游服务器。timeout是独占锁的占用最大时间,超时之后就会自动释放锁供后续的请求争抢,然后继续执行。

那回到例子,当第一个请求timeout了,为什么后面的49999个请求不是依次执行,而是同时批量发往上游服务器呢? 这个具体内部是个什么原理?希望老师解答

写回答

1回答

酷田

2020-04-20

只有proxy_cache_lock参数,nginx并不会限制49999请求的响应,nginx会转发,只有加上timeoht才会限制,其他相同的请求会等待第一个相应的结果,这是nginx自身的问题……nginx的缓存做的并不好,这点不如squid和varnish

0
0

Nginx体系化深度精讲 给开发和运维的刚需课程

快速精通Nginx1.17 ,体系与深度并存,轻松搞定企业级痛点问题

661 学习 · 170 问题

查看课程