Re: deferred и bind и много виртуальных хостов
Igor Sysoev
igor на sysoev.ru
Пт Май 4 05:59:22 UTC 2012
On Fri, May 04, 2012 at 11:48:50AM +0600, Nick Knutov wrote:
> Из документции:
>
> deferred
> указывает использовать отложенный accept() на Linux с помощью опции
> TCP_DEFER_ACCEPT.
>
> bind
> указывает, что для данной пары адрес:порт нужно делать bind()
> отдельно. [...] в этом случае для определения адреса, на которой пришло
> соединение, делается системный вызов getsockname(). Если же используются
> параметры [...], deferred или so_keepalive, то для данной пары
> адрес:порт всегда делается отдельный вызов bind().
>
> Вопрос: виртуальный хостинг, сотни/тысячи server{}, если у каждого
> listen прописать deffered - это как-то скажется [значительно] на
> потребление процессора, памяти или чего-то ещё? Или в этом случае лучше
> сделать отдельный фронтенд с nginx с listen *.80 deferred, который будет
> проксировать на основной nginx, который как сейчас (с перевешиванием,
> например, на unix socket), который уже будет проксировать на разные
> бэкенды дальше?
deferred указывается один раз для listen-пары, то есть,
server {
listen 80 deferred;
server_name _;
}
server {
listen 80;
server_name a;
}
server {
listen 80;
server_name b;
}
server {
listen 80;
server_name c;
}
Что касается использования собственно deferred, то я не уверен, что это
хорошо.
--
Igor Sysoev
Подробная информация о списке рассылки nginx-ru