accept() failed (53: Software caused connection abort)

Maxim Dounin mdounin at
Wed Jul 13 18:22:13 MSD 2011


On Wed, Jul 13, 2011 at 04:10:52PM +0200, Adam PAPAI wrote:

> Maxim Dounin wrote:
> >Hello!
> >
> >Maxqlen is maximum listen socket queue length (the queue of
> >connections completed handshake but not yet accept()'ed by
> >application), and FreeBSD will reset new connections if it's
> >exhausted (or will just drop them if you have
> >net.inet.tcp.syncache.rst_on_sock_fail=0).
> >
> >If you see qlen greater than maxqlen it means that your app can't
> >cope with load.  If this happens for a fraction of a second due to
> >connection bursts - this may be ok and you just need to increase
> >queue length to compensate bursts.
> The question is now: how to increase the queue length under FreeBSD.
> I cannot find the config value in sysctl.

System limit is kern.ipc.somaxconn.  But as far as I remember you 
have 4096 queue for nginx, so it looks like you've already tuned 
it. :)

The question is how to tune it in your backend, but there is no 
simple answer: this depends on backend.  E.g. php-fpm should use 
kern.ipc.somaxconn as seen on process startup by default and have 
an option ("backlog") to tune it.

But again: as long as you've been able to see overflows, just 
increasing listen queue isn't likely to help.  You have to add 
more backends.

Maxim Dounin

More information about the nginx mailing list