Re: Ограничение на число одновременных соединений, но с постановкой лишних в очередь
Dmitry Koterov
dmitry at koterov.ru
Sat Nov 21 04:48:00 MSK 2009
Спасибо за советы!
Что касается backlog на стороне сокета, то видите ли, какая штука...
ограничение нужно не per-socket, а per-HTTP_HOST (грубо говоря). Т.е. на
одном IP висит много виртуальных хостов, и на каждый должно идти, скажем, не
больше 5 одновременных коннектов (а на весь сокет - ограничения нет). Можно,
конечно, каждый хост на свой внутренний IP повесить, но хочется чего-то
более универсального.
Про haproxy я и не подумал... В нем точно можно вот так сделать, когда на
одном и том же IP висят несколько виртуальных хостов, и ограничение
установлено по каждому?
2009/11/17 Gena Makhomed <gmm at csdoc.com>
> Dmitry Koterov wrote:
>
> Требуется ограничить именно число коннектов к backend-ам, так, чтобы
>> входящие соединения вставали в очередь, если все backend-ы заняты.
>>
>
> такая функциональность встроена в TCP/IP, это регулируется на backend`ах
> параметр backlog - "number of pending connections that can be queued up"
>
> http://en.wikipedia.org/wiki/Berkeley_sockets#listen.28.29
>
> наверное проще будет настроить на backend`ах параметр backlog,
> чем дублировать в nginx функциональность из TCP/IP стека ядра.
>
>
> Как известно, директива limit_conn позволяет ограничивать
>> одновременной число соединений к той или иной зоне. Однако, когда
>> это число превышается, nginx выдает 503.
>>
>
> Есть ли в nginx какое-то средство, которое бы позволило ставить
>> "лишние" запросы в очередь, а не давать им отлуп? Например, я хочу,
>> чтобы на backend шло одновременно не более 5 соединений, а все
>> остальные ставились nginx-ом в очередь.
>>
>
> в новых версиях PHP дефолтовый backlog уже увеличили с 5 до 128.
>
> --
> Best regards,
> Gena
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20091121/ff43d561/attachment.html>
More information about the nginx-ru
mailing list