Acept systemd.socket

Валентин Бартенев vbart на nginx.com
Чт Мар 17 22:26:36 UTC 2016


On Tuesday 15 March 2016 19:34:54 S.A.N wrote:
[..]
> > > Nginx загружается намного позже ядра, наша задача - пока Nginx не
> > > загрузился, не терять, не дропать пакеты, а сделать очередь, которую
> > > обработает Nginx когда запустится.
> > 
> >  Вы, вероятно, не поняли. Коннекции не теряются (вообще, не терять
> >  коннекции и не дропать пакеты -- это разные задачи, вторая для tcp
> >  не имеет большого смысла).
> > 
> >  Есть смысл не режектить коннекции пока сервер не запустится, чтобы
> >  клиенты не получали отлуп. Ваше решение в этом плане плохо тем, что
> >  есть интервал времени между подъёмом сетевых интерфейсов и стартом
> >  сервера, когда коннекции режектятся и клиенты получают отказ.
> >  Использование systemd для сокетной инициализации от этого не спасает.
> >  Если же сервис закрыть пакетным фильтром (на DROP) до подъёма
> > интерфейса,
> >  где-нибудь в pre-up, и открыть после старта сервера, то никаких
> >  режектов не будет.
> 
> Возможно вы правы, но мне как разработчику бекенда, приятней и понятней
> настраивать директивы systemd.socket.
> 
> Наши бекенд демоны запускает systemd.socket, он же и следит за ними на
> протяжении их жизни.
> Nginx по сути такой же демон, но стартуют при загрузки OS, я замерял время
> когда доступный systemd.socket и когда Nginx, в результате Nginx готов к
> принятию конектов на ~700 ms позже, по сравнению с systemd.socket.
> Это не критично и OS перегружается редко, но зачем терять эти ~700 ms,
> что-то настраивать в iptables можно, но зачем когда есть systemd.
> 
> Nginx, станет только лучше если реализует прием сокета от systemd.socket.
> 

Это довольно странное желание - чтобы машина, которая по сути ещё не готова
к работе, частично делала вид, что она готова принимать трафик.  Что вы будете
делать если nginx так и не заработает через 700 мс, а балансировщик уже
радостно нальет на неё трафик?

Почему вы считаете, что эти 700 мс куда-то теряются, хотя тем временем они
могли бы быть обслужены живой машиной за меньшее время?

А сколько секунд теряется на биос и загрузку ядра?  В чем разница?

Т.н. HA обеспечивается вовсе не такими методами.  Больше похоже на способ
тщательно разложить самому себе грабли у входа.

--
Валентин Бартенев


Подробная информация о списке рассылки nginx-ru