Acept systemd.socket
S.A.N
nginx-forum на forum.nginx.org
Вт Мар 15 23:34:54 UTC 2016
Evgeniy Berdnikov Wrote:
-------------------------------------------------------
> On Tue, Mar 15, 2016 at 11:39:12AM -0400, S.A.N wrote:
> > Evgeniy Berdnikov Wrote:
> > -------------------------------------------------------
> > > On Tue, Mar 15, 2016 at 10:33:10AM -0400, S.A.N wrote:
> > > > Наш use case простой, нужно чтобы на ранней стадии загрузки OS,
> > > нужные порты
> > > > могли принимать конекты, systemd.socket идеальный вариант, мы
> его
> > > используем
> > > > для наших бекендов.
> > >
> > > Зачем принимать коннекты, если их некому обрабатывать? Такой use
> case
> > > практически эквивалентен простым дропам syn'ов -- отличие будет
> лишь
> > > в более долгом разгоне после старта сервера, зато нагрузка на
> сервер
> > > будет подниматься плавнее. Т.е. я бы просто поставил где-нибудь
> на
> > > первых этапах загрузки iptables -P INPUT DROP и всё, никаких
> плясок
> > > вокруг сокетной инициализации не нужно.
> > > --
> ...
> > Nginx загружается намного позже ядра, наша задача - пока Nginx не
> > загрузился, не терять, не дропать пакеты, а сделать очередь, которую
> > обработает Nginx когда запустится.
>
> Вы, вероятно, не поняли. Коннекции не теряются (вообще, не терять
> коннекции и не дропать пакеты -- это разные задачи, вторая для tcp
> не имеет большого смысла).
>
> Есть смысл не режектить коннекции пока сервер не запустится, чтобы
> клиенты не получали отлуп. Ваше решение в этом плане плохо тем, что
> есть интервал времени между подъёмом сетевых интерфейсов и стартом
> сервера, когда коннекции режектятся и клиенты получают отказ.
> Использование systemd для сокетной инициализации от этого не спасает.
> Если же сервис закрыть пакетным фильтром (на DROP) до подъёма
> интерфейса,
> где-нибудь в pre-up, и открыть после старта сервера, то никаких
> режектов не будет.
> --
> Eugene Berdnikov
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
Возможно вы правы, но мне как разработчику бекенда, приятней и понятней
настраивать директивы systemd.socket.
Наши бекенд демоны запускает systemd.socket, он же и следит за ними на
протяжении их жизни.
Nginx по сути такой же демон, но стартуют при загрузки OS, я замерял время
когда доступный systemd.socket и когда Nginx, в результате Nginx готов к
принятию конектов на ~700 ms позже, по сравнению с systemd.socket.
Это не критично и OS перегружается редко, но зачем терять эти ~700 ms,
что-то настраивать в iptables можно, но зачем когда есть systemd.
Nginx, станет только лучше если реализует прием сокета от systemd.socket.
Posted at Nginx Forum: https://forum.nginx.org/read.php?21,265330,265369#msg-265369
Подробная информация о списке рассылки nginx-ru