| Nginx-ru mailing list archive (nginx-ru@sysoev.ru) [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
 Re: Реализация multiple limit_req
 
 Hello!
On Wed, Dec 14, 2011 at 06:05:01PM +0400, Валентин Бартенев wrote:
> 
> Не алгоритм, а принцип работы:
> 
>  - Ищем лимит, который отклоняет запрос;
>  - if found
>     -- Отклоняем запрос.
>  - else 
>     -- Учитываем запрос во всех лимитах;
>     -- Ищем лимит, который устанавливает наибольший delay;
>     -- if max delay == 0
>         --- Пропускаем запрос.
>     -- else
>         --- Задерживаем запрос на max delay.
> 
> Хорошо?
Давай для начала распишем последствия обычного "последовательного" 
применения лимитов, чтобы было понятно что так нельзя.  Или, 
наоборот, можно, но с какими ограничениями.
Что касается принципа, то он мне не нравится: нам либо нужно всё 
это делать держа локи (deadlock expected), либо имеем race между 
проверкой и обновлением (и, опять же, локи придётся брать два 
раза, что тоже не очень хорошо).
Maxim Dounin
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru 
 |