Re: Ограничение на количество тяжёлых процессов.
Igor Sysoev
igor на sysoev.ru
Пт Окт 15 10:02:45 MSD 2010
On Fri, Oct 15, 2010 at 12:50:26PM +0900, Alexander Petrovsky wrote:
> >
> > http {
> >
> limit_zone UPLOAD $any 16k;
> >
> > server {
> >
> > location = /upload.php {
> > client_max_body_size 500M;
> > set $any 1;
> > limit_conn UPLOAD 10;
> > error_page 503 =200 /nomore;
> > proxy_pass ...
> > }
> >
> > location = /nomore.html {
> > root /path/to/file;
> > }
> >
>
> Правильно ли я понимаю, что переменная $any будет всегда равна 1? Тогда
> непонятно почему это вынесено в переменную, а так же непонятно чем
> обусловлен размер зоны в 16К?
Потому что в limit_zone сейчас можно указать только переменную.
Строку из перменных и простых сторок - нельзя.
> Исходя из:
> Длина значений переменной $remote_addr может быть от 7 до 15 байт, поэтому
> размер состоянии равен 32 или 64 байтам. Длина всех значений переменной
> $binary_remote_addr всегда 4 байта и размер состояния всегда 32 байта. В
> зоне размером 1 мегабайт может разместиться около 32000 состояний размером
> 32 байта.
> и
> The numbers of sessions is determined by the assigned variable, it depends
> on the size of the used Variable and *memory_max_size* value.
>
> $any равно 1у байту, выходит в зоне размером 16К можно будет разместить
> около 16000 состояний.
В этой зоне будет храниться ровно одно значение для всех соединений - "1",
к этому значению привязан счётчик, показывающий сколько всего соединений
в этой зоне. Там и 16К много, просто минимальный размер зоны.
--
Игорь Сысоев
http://sysoev.ru
Подробная информация о списке рассылки nginx-ru