Re: Ограничение на число одновременных соединений, но с постановкой лишних в очередь
Gena Makhomed
gmm на csdoc.com
Вс Ноя 29 20:03:38 MSK 2009
Dmitry Koterov wrote:
> Кажется, в Апаче-таки можно включить ограничение на число соединений.
> Есть вот такая директива:
> http://httpd.apache.org/docs/2.0/mod/mpm_common.html#listenbacklog
>
> Я посмотрел в исходниках, она действительно меняет параметр при вызове
> listen(), а listen() вызывается в make_sock() (изменение глобально для
> всех сокетов). Соответственно, если каждому клиенту выделить свой сокет
> (например, развесить клиентов по разным портам localhost-а и
> проксировать на них nginx-ом), то, теоретически, поклиентное ограничение
> должно срабатывать (но я не проверял).
>
> Или я ошибаюсь, и параметр backlog в listen() ограничивает не число
> одновременно живущих соединений, а что-то еще?
да.
ListenBacklog - The maximum length of the queue of pending connections
параметр ListenBacklog задает максимальную длину очереди ожидающих
подключений на каждый listening socket, а не максимально возможное
количество одновременно обрабатываемых запросов / занятых воркеров.
теоретически - наверное возможно обучить апач параметру SocketMaxConn,
но большое количество listening сокетов - это неустранимый недостаток,
что может отрицательно сказаться потом на производительности сервера.
если вариант nginx <=> haproxy <=> apache по каким-то причинам
не подходит, то лучше maxconn добавлять не в apache, а в nginx,
тогда можно будет сделать именно то, что хотелось: настраиваемые
ограничения на каждый виртуальный хост / площадку, без выделения
каждому сайту отдельного listening сокета и без лишнего overhead`а.
>> Как будто бы maxconn в haproxy тоже ограничивает число
>> подключений на весь кластер, а не per-HTTP_HOST
>
> если каждому виртуальному хосту выделить свой собственный ip:port
> тогда можно будет сделать желаемое ограничение средствами haproxy
>
> примерно вот таким способом:
> nginx <=> haproxy <=> apache
>
> если конфиги nginx и haproxy генерировать скриптом
> такая конструкция не будет сложной в сопровождении
>
> в nginx и его модулях такой функциональности еще нет -
> об этом уже несколько раз спрашивали в списке рассылки
--
Best regards,
Gena
Подробная информация о списке рассылки nginx-ru