accept() failed (53: Software caused connection abort) [SOLVED]

Adam PAPAI wooh at
Thu Jul 14 13:28:23 MSD 2011

Maxim Dounin wrote:
> Hello!
> 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

It seems after 2 days investigation, we've found the main problem: I/O.

After rewriting the PHP code to avoid file based session handling, to 
memory based session handling everything started to work without error 

It seems the I/O influences heavily the web applications, even if it's 
only a small and fast PHP code.

Thanks everything.

Grapes Communication Ltd.
E-mail: wooh at

More information about the nginx mailing list