Re: Дискретизация при определении req rate

Maxim Dounin mdounin на mdounin.ru
Вт Мар 16 17:48:49 MSK 2010


Hello!

On Tue, Mar 16, 2010 at 09:59:08AM -0400, dagr wrote:

> Меня волнует предсказуемость результата. 
> 
> Мне нужно например чтобы 20 картинок при Сtrl-R страницы  
> нормально скачались .  Про скорость я знаю , что полезут они  в 
> пределах 1 ой секунды. 
> 
> Соответственно  я выставляю rate=30 , да еще и 10 burst И тем не 
> менее вижу что 
> 
> ab -n 20 -c 15 http://url  - зарубилось . 
> 
> Вопрос - как получилось что одиночный пакет в 20 запросов был 
> зарублен  директивой  с rate=30  ?

Более burst запросов за короткое время - это повод для 
драки^Wвозврата 503.  А если не использовать nodelay - то любое 
количество запросов с частотой больше rate - это ещё и повод для 
задержек.

И, чтобы не было недопониманий - два запроса с промежутком 1 
миллисекунда между ними - это два запроса с частотой 1000 запросов 
в секунду, что больше rate=30r/s.

Отдельно доставляет тот факт что сейчас неправильно выставляются 
задержки на запросы (без учёта установленной скорости), недавно 
тут обсуждали.  В вашем случае они будут в 30 раз больше чем 
должны.

> Как мне высчитать (без эмпирического подбора) , сколько нужно 
> выставить , чтобы они пропустились, и при этом не делать слишком 
> большой запас (иначе теряется смысл ограничения) ?

Если вам нужно, чтобы за произвольно короткое время можно было 
сделать 20 запросов - надо выставлять burst=20.  Чтобы 
пользователей без нужды не задерживали - использовать nodelay, 
т.е. token bucket.  А rate выставлять исходя из средней скорости 
работы с сайтом.

Maxim Dounin



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