[PATCH] Fix drain logic for small number of connections

Joel Cunningham joel.cunningham at me.com
Tue Jan 17 15:37:58 UTC 2017


Maxim,

> On Dec 30, 2016, at 8:04 PM, Maxim Dounin <mdounin at mdounin.ru> wrote:
> 
> Hello!
> 
> On Fri, Dec 30, 2016 at 12:13:01PM -0600, Joel Cunningham wrote:
> 
>>> On Dec 29, 2016, at 1:13 PM, Maxim Dounin <mdounin at mdounin.ru> wrote:
> 
> [...]
> 
>>> I agree though that if connection shortage is occasional the 
>>> current behaviour might not be optimal with worker_connections set 
>>> to a small value, or there are only a few connections can be 
>>> reused.  Instead of gradually reducing keepalive (and post accept) 
>>> timeout to a smaller value it closes all keepalive connections 
>>> from time to time.
>>> 
>>> Probably optimal solution would be to close no more than some 
>>> fraction of reusable connections at once.  Patch series below.
>> 
>> I tested out the patch series and I did run into a problem.  
>> Looks like the reusable_connections_n increment and decrement 
>> are swapped.  The first call to ngx_reusable_connection causes 
>> unsigned integer wrap around.  I swapped the increment/decrement 
>> and the patch gives the expected behavior of only freeing 1/8 
>> (or at least 1) of the reusable connections.
> 
> Thanks for noticing this, fixed.
> 

Was your patch series going to be comitted?  I didn’t see anything in the commit history yet

Thanks,

Joel



More information about the nginx-devel mailing list