limit_req

Victor Sudakov vas на mpeks.tomsk.su
Чт Сен 15 02:01:16 UTC 2011


Коллеги,

Возьмется кто-нибудь ответить на вопросы по сабжу? Я их повторю.
Заранее спасибо.

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 прочитал, можно снова туда не
посылать.

2. Какие best practice для обычных интерактивных динамических сайтов?
С целью не допустить DoS от роботов, но и не попортить user
experience.

> Если же один просмотр страницы пользователем выливается во много 
> обращений к динамическим ресурсам (e.g. AJAX туда, AJAX сюда, плюс 
> динимаически генерируемых картинок загрузить и т.п.), и все они 
> лимитированы - то соответственно цифры будут совсем другие.

3. О том и вопрос - какие? Как правильно их оценить и как вычислить
(например по логу), что надо бы их подкрутить.

> В любом случае я бы рекомендовал использовать "limit_req ... 
> nodelay", от задержки обычно больше вреда чем пользы (хотя и 
> существуют специфические ситуации, где она полезна).

4. Можно об этом поподробнее? 

-- 
Victor Sudakov,  VAS4-RIPE, VAS47-RIPN
sip:sudakov at sibptus.tomsk.ru



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