ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: limit_req_zone, переменный rate


  • To: nginx-ru@xxxxxxxxx
  • Subject: Re: limit_req_zone, переменный rate
  • From: Sergej Kandyla <sk.paix@xxxxxxxxx>
  • Date: Thu, 11 Mar 2010 18:57:12 +0200
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from :user-agent:mime-version:to:subject:references:in-reply-to :content-type:content-transfer-encoding; bh=Eq2uogmLToHvn7VNO1wRo/kNVtk/vlzKkvBiawVvg3c=; b=tk2hAOo4XVJ+U9o9SMFuxmxg3EBIFITI69e+X4kJ0HYq2twWBEtSysYTNC0bANJjCl P1tuPBYgBdO6Wgiw5Pl0HXWvHI0fp/D3OXNkFYL+VQ1FpONYlg9H0ttRiWo6bsKwiNNT 1mBZmB4blGYEivjH2x69TSzoGuH9sd5CFpc8g=
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:user-agent:mime-version:to:subject:references :in-reply-to:content-type:content-transfer-encoding; b=RroLxDgXKhDKOzxufjRwbCj5nxFYOQoR+d6OXHqLHKHatoFRDBHB06/1budOudphP6 RMjHC5VbprB1zpoUyf4rYhTHn6PBOoA5kKHTbfGzPE8GszYVvjcWqdWu5boGjAuBLRKd B9TSDXs+GOCTySE+C6qM+cFq9ln+blX7Tk9uI=
  • In-reply-to: <20100311163751.GN76989@xxxxxxxxxx>
  • References: <4B98DCED.5030501@xxxxxxxxx> <20100311123326.GI76989@xxxxxxxxxx> <4B98E5A2.6050000@xxxxxxxxx> <20100311131840.GK76989@xxxxxxxxxx> <4B99021E.6030304@xxxxxxxxx> <20100311163751.GN76989@xxxxxxxxxx>

Maxim Dounin wrote:
1) если стоит директива  limit_req_log_level notice;
то в error_log о limits не пишитеся вообще ничего.
(Linux 2.6.18-164.11.1.el5.028stab068.3  nginx/0.8.34)

error_log при этом включён с каким уровнем логгирования?
error_log        /var/log/nginx/error.log  notice;



Т.е. как видно на основе ответов курла и записей в error_log,
каждый последующий запрос обрабатывается в среднем на секунду
больше, чем предыдущий, по истечению моего burst=10,
получаю 503, что законно.

каждый мой последующий запрос должен задерживаться на минуту
(согласно rate=1r/m) или N минут если это N запрос в пределах burst.
В принципе текущее поведение с задержкой на секунду сделано вполне
мудро, но вопрос в том, как оно на самом деле  должно
обрабатываеться.
Фича\баг ?

Бага. Чтобы получить описанный в доках CBR должно задерживаться на (сейчас в корзине) / rate, по факту задерживается на (сейчас в корзине).

Впрочем, мне лично всегда казалось вообще неправильным пытаться задерживать запросы. Возможности для DoS'а это только увеличивает. Гораздо правильнее использовать описанный в доках nodelay.

это верно,
я его и использую для обычных клиентов ;)

но понимать как в целом работает нужный модуль - никогда лишним не будет.

да и  burst без nodelay по сути будет являться  неким backlogом для бекенда,
и может использоваться чтобы лимитировать нагрузку на бекенд.

Ведь если ботнет ломанется на сервак, и будет слать по пачке запросов с каждого айпишника раз в несколько минут - то delay тут как нельзя лучше. (дальше скриптами анализируем error и access log на предмет агресивных ботов - и блокируем на уровне nginx, а лучше firewall)

А для обычных клиентов - nodelay, определенно.

Благо, делить клиентов, как оказалось, совсем не так сложно, спасибо вам!


_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.