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
|