Hello!
On Fri, Oct 17, 2014 at 12:03 AM, 冰河 wrote:
> 请问大家,nginx的limit_req 模块为什么要使用阻塞的获取锁的方式ngx_shmtx_lock,
> 而不使用非阻塞ngx_shmtx_trylock方式,应该是使用非阻塞的方式效果更好啊,
> 那位大侠给解释一下???
>
你的意思是应当在它拿不到锁的时候把控制权交还给 nginx 事件循环?不幸的是,在此种方式下,limit_req
同步状态数据到共享内存的延时是不可控的(因为有许多其他 IO 事件会在中间被处理),这会导致实际的请求速率明显超出需要控制的阈值。
由于 limit_req 涉及安全,所以及时同步状态数据到共享内存是至关重要的。
Regards,
-agentzh