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