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) будут отклонены.