limit_req

Valery Kholodkov valery+nginxru на grid.net.ru
Чт Сен 15 08:52:28 UTC 2011


----- Victor Sudakov <vas at mpeks.tomsk.su> wrote:
> Коллеги,
> 
> Возьмется кто-нибудь ответить на вопросы по сабжу? Я их повторю.
> Заранее спасибо.
> 
> 1. Не совсем понятно, как интерпретировать сообщения в логах. Например
> 
> 2011/09/04 19:39:16 [error] 69112#0: *3786228 limiting requests, excess: 16.330 by zone "one", client: XXXXXX
> 
> Что такое *3786228

Порядковый номер соединения в воркере.

> и какой физический смысл значения excess? 
> > 
> > Excess - это текущее количество запросов, скопившееся в "корзине".  
> > Если оно больше параметра burst - запросы будут отбрасываться. 
> 
> Я тоже так подумал, но не понимаю, как количество запросов может быть
> дробное. Про leaky bucket algorithm прочитал, можно снова туда не
> посылать.

Это в запросах в секунду. Если получили 1 запрос и прошло 2 секунды, получим значение 0.5

> 2. Какие best practice для обычных интерактивных динамических сайтов?
> С целью не допустить DoS от роботов, но и не попортить user
> experience.
> 
> > Если же один просмотр страницы пользователем выливается во много 
> > обращений к динамическим ресурсам (e.g. AJAX туда, AJAX сюда, плюс 
> > динимаически генерируемых картинок загрузить и т.п.), и все они 
> > лимитированы - то соответственно цифры будут совсем другие.
> 
> 3. О том и вопрос - какие? Как правильно их оценить и как вычислить
> (например по логу), что надо бы их подкрутить.
> 
> > В любом случае я бы рекомендовал использовать "limit_req ... 
> > nodelay", от задержки обычно больше вреда чем пользы (хотя и 
> > существуют специфические ситуации, где она полезна).
> 
> 4. Можно об этом поподробнее? 

-- 
Regards,
Valery Kholodkov


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