Dear Willy.

Am 09-08-2016 19:37, schrieb Willy Tarreau:
On Tue, Aug 09, 2016 at 05:06:15PM +0200, Aleksandar Lazic wrote:

[snnipp]

Yes that's true. that's a different concept.

Note that it's not a matter of process but of socket. In SO_REUSEPORT mode we have multiple sockets for a same ip:port. So packets are delivered into individual sockets. When the last user of a socket closes it, the socket is
closed, and a reset is sent for all packets in its queue.

The only way to avoid this would be to have a master/worker model where the master is never restarted, deals with sockets and passes them to the other processes over unix sockets. A first step for this was developped by Simon a few years ago but he probably faced all the architecture limitations at
once, resulting in various stuff like segfaults on reloads and I don't
remember what!

The exact model needed in fact is not a master/worker but a socket server
(which the master often is in such a model). But to a certain extent we
could very well imagine an external process used as a socket server and
being reconfigured upon every reload, delivering sockets and keeping
refcounts on them.

This is something that could be worth reconsidering for 1.8 if people are
willing to work on this, but it's a huge effort due to a lot of history
accumulated in this dirty area to be honnest.

Willy

Thank you, as always a very detailed and clear answer.

With the answers from Lukas my question is answered ;-)

Very best regards
aleks

Reply via email to