Re: Как nginx считает текущую скорость при работе limit req?

proforg proforg на maloletka.ru
Сб Янв 9 11:46:55 MSK 2010


"Ограничение делается с помощью метода leaky bucket."
http://sysoev.ru/nginx/docs/http/ngx_http_limit_req_module.html

описание алгоритма - например вот тут:
http://en.wikipedia.org/wiki/Leaky_bucket

2010/1/9 Vanya <nginx-forum at nginx.us>:
> И все-таки я побуду утренним занудой. Теоретический вопрос.
>
> вот к примеру имеем в конфиге
>
> limit_req_zone  $binary_remote_addr  zone=one:10m   rate=30r/s;
>
>
> Допустим на сервер приходят 9 запросов с промежутком 50ms
>
> С точки зрения математики и сферического коня в вакууме, фактическая частота запросов при этих условиях составит:
>
> 1/50ms = 20 запросов в секунду.
>
> А с точки зрения nginx`a?
>
> Почему я задаю такой вопрос? Меня бы это не волновало, но.
> Я в качестве эксперимента выставил лимит на частоту 30r/s, далее иду на тестовую страницу, на которой около 15-ти картинок, стилей и прочих элементов (т.е. в сумме, при одном рефреше этой страницы, браузер сгенерирует не больше 16 запросов).
> И что же я получаю в error логе? Я все равно получаю якобы превышение частоты и дилэи (от 1 до 3).
>
> А если усложнить вопрос и представить что несколько запросов шли с разным интервалом но уложились в одну секунду? По какой формуле нгинкс вычисляет скорость для решения об ограничении n+1-го запроса? Текущее среднее?
>



-- 
Aleksej Besciokov
EMail/JID: proforg at maloletka.ru
phone: +7 495 7853149


Подробная информация о списке рассылки nginx-ru