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
|