Re: reuseport в конфигах nginx
Валентин Бартенев
vbart на nginx.com
Вт Апр 12 21:01:07 UTC 2016
On Tuesday 12 April 2016 22:48:52 Peter Leonov wrote:
> Вообще говоря, я понимаю с кем веду беседу, так что уже сильно сомневаюсь в своей разумности ;) Но, раз взялся за куш…
>
>
> On Tuesday, 12 April 2016 at 21:29, Валентин Бартенев wrote:
> > […]
> >
> > И как с установленным SO_REUSEPORT в такой конфигурации можно не потерять
> > соединений?
>
> Как обычно, обработать все запросы, не принимая новых, а потом закрыть свой слушающий сокет. Или nginx забывает, что он умел SIGQUIT, когда работает в докере с сокетом, открытым через SO_REUSEPORT?
Куда денутся новые соединения, стоящие в очереди к этому слушающему сокету,
который вы собираетесь закрыть? Кто прекратит их туда добавлять?
>
> > > А вообще, 0-downtime деплой через reuseport очень вкусно выглядит, да.
> > [..]
> >
> > SO_REUSEPORT в Linux не позволяет "0-downtime деплой", он вообще не для этого.
> А и пускай не позволяет, не важно почему. Но для чего именно нужен SO_REUSEPORT? Какая его конкретная цель?
>
Я уже указывал раньше в топике и давал ссылку на статью где расписаны подробности.
В линуксе он служит только для повышения производительности путем распределения
новых соединений по нескольким сокетам.
Новые поступающие соединения попадают случайным образом на один из сокетов, открытых
с опцией SO_REUSEPORT. При этом если вы закрываете один из них, то соединения,
попавшие в очередь к этому сокету потеряются.
--
Валентин Бартенев
Подробная информация о списке рассылки nginx-ru