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