Hi,

On Tue, Nov 10, 2015 at 07:50:56AM +0000, Zhou,Qingzhi wrote:
> Hi??
> Thanks very much.
> But I think we can use listener_full instead of limit_listener if we want
> wake up the listener when there??s a connection closed. Like in the
> beginning of listener_accept:
> 
>  if (unlikely(l->nbconn >= l->maxconn)) {
>       listener_full(l);
>       return;
>       }
> 
> 
> WHY not using listener_full ?

Because the listener is not full. If it were full, it would have been
handled by the test you pointed above. Here we're in the situation where
the frontend's maxconn is reached before the listener is full. So you
have 2 listeners in a frontend each getting half the number of connections.

We know that we won't be able to accept any new connection on this listener
until some connections are released on the frontend. So by calling
limit_listener() we temporarily pause the listener and add it to the
frontend's queue to be enabled again when the frontend releases
connections. There's no reason to add a delay here because we know
exactly when connections are released on this frontend. So trying this
again will not change anything.

Hoping this helps,
Willy


Reply via email to