On Tue, Apr 10, 2018 at 08:38:32PM +0800, ??? wrote:
> Hi, all,
> haproxy still have the thundering herd problem in the multi-process
> mode, the EPOLLEXCLUSIVE flag has been added since linux 4.5, which can
> solve this problem
Well I disagree with this approach, it will instead degrade the situation.
Let me explain.
Right now when working in multi-process mode, it is strongly suggested to
use multiple "bind" lines each with its own process. When this is done,
the sockets are bound with SO_REUSEPORT, where the kernel performs some
round-robin load balancing between all the sockets, and each process
receiving connections will be woken up and will be able to accept at
once *all* pending connections for its listener.
With your approach what will happen is that a single process will be
woken up for multiple pending requests at once, it will suck them all
in a loop without leaving a chance to the other processes to take their
share. This creates a huge imbalance that is already visible when using
nbproc without the "process" directive on the bind lines. With SSL this
has an even worse impact since a process can steal a lot of traffic and
spend a lot of time in handshakes while the other ones are twidling