关于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
00
相似问题