ПРОЕКТЫ 


  АРХИВ 


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: Реализация multiple limit_req


  • To: nginx-ru@xxxxxxxxx
  • Subject: Re: Реализация multiple limit_req
  • From: Валентин Бартенев <ne@xxxxxxxx>
  • Date: Wed, 14 Dec 2011 19:39:19 +0400
  • Dkim-signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=vbart.ru; s=mail; h=Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:In-Reply-To:References:Date:Subject:To:From; bh=q7FGrXv10AXy8n6f9MiAF6vYVDifmo3hdXwI2sjF9Lg=; b=wa8MpjlFwrABxMSwJB0Z1gCOw9kxNHRs/p24rD7UfetbYvPsNVFTt1BqtZRoAJ2aj/EQXEqoo3ptMgogoGkizLooBUWmgUhbyd72uAQe8j432TRuHINRSUgaVSwPYk+h0VY3wI/0H7waFRmodjlB3BdtvTwV6/Bj/tfurqdCgZj2bD/QtsXJXA49EzURjzJGgU/2e8Fch0ks3MEHNk/cgAHwj6NEqxyU8wTEpZ4QOb1Ut7TC/MzlihNwIEtAwfcfGiUrDDzxqfCNod7gt/u7ZolzvWtsSysS4qneK33Bgn6ekPxBPjXcmMfuO7lklxEq4YDCJ3/FCoh6TIeXis5yWQ==;
  • In-reply-to: <20111214142226.GU67687@xxxxxxxxxx>
  • References: <201112141805.02107.ne@xxxxxxxx> <20111214142226.GU67687@xxxxxxxxxx>

On Wednesday 14 December 2011 18:22:26 Maxim Dounin wrote:
> Давай для начала распишем последствия обычного "последовательного"
> применения лимитов, чтобы было понятно что так нельзя.  Или,
> наоборот, можно, но с какими ограничениями.
> 
> Что касается принципа, то он мне не нравится: нам либо нужно всё
> это делать держа локи (deadlock expected), либо имеем race между
> проверкой и обновлением (и, опять же, локи придётся брать два
> раза, что тоже не очень хорошо).
> 

В limit_conn у нас также локи берутся дважды, и тут, на первый взгляд,
всё можно сделать по тому же принципу.

Опять же, всё упирается в то, хотим ли мы считать отклоненные запросы или
не хотим.

"Счёт" только еще можно разделить на два уровня:
 - обновление времени последнего запроса;
 - увеличение очереди.

Если мы будем просто последовательно проверять лимиты до первого
срабатывания, то у нас получается ситуация, когда "иссякший" лимит
стоящий на втором месте будет работать достаточно странно, имея
причудливую зависимость от предшествующих.

Странность заключается в том, что запросы будут отклоняться, когда
предшествующие вообще не сработали, и не отклоняться, если предшествующие
сработали на задержание. Иными словами, меньший rate по предшествующим
лимитам будет приводить к более суровым мерам.

Меньший rate -> более жесткие меры - IMHO, вот так быть не должно.

--
Валентин Бартенев
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.