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