Re: Лимиты: leaky bucket

Валентин Бартенев ne на vbart.ru
Вс Май 27 06:05:35 UTC 2012


On Sunday 27 May 2012 08:25:55 Станислав wrote:
[...]
> 
> burst - это объем ведерка. В случае с burst=5 в ведерко поместиться не
> больше чем 5 запросов, все остальные умрут,
> а rate=3r/s иметься ввиду, что на протяжении 1 секунды с ведра вытекут
> (будут обработаны) 3 запроса ?
> 

Вытекут - да. А обработаны могут быть и сразу, если задан nodelay.

Формулировка "на протяжении 1 секунды" не совсем точна, не отражает
сути происходящего. Никакого периода в 1 секунду в алгоритме нет.

Основное заблуждение у многих возникает тут в том, что они полагают,
что если написано 3r/s и пользователь прислал сразу три запроса, то в
лимит они никаким образом не попадут.

Представьте себе rate=3r/s burst=0 - в таком случае будут отклонятся
все запросы, которые поступят ранее чем через ~333 миллисекунды после 
поступления предыдущего успешного (т.е. не отклоненного запроса).

Пользователь может послать "на протяжении 1 секунды" 3 запроса, но с
интервалом в 10мс, и несмотря на то, что он в эту секунду (да хоть
вообще в этот день) запросов посылать больше не собирается, два при 
вышеуказанных параметрах (а именно burst=0) будут отклонены.

--
Валентин Бартенев


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