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