Socket error (EAGAIN) at high load

Dean Banks <[email protected]> Mon, 23 Jul 2012 13:55:02 -0700
Newsgroups gmane.comp.web.fastcgi.devel
Message-ID <[email protected]>
Hi all,

I'm running an FCGI 2.4.1-based  C application over a Unix domain socket 
behind nginx on Linux 2.6.32.  At periods of high load, I get a lot of 
EAGAIN errors from nginx, implying that my app is not draining the 
receive buffer fast enough.

I have a high number of FDs configured and socket buffers are

SO_RCVBUF = 256960
SO_SNDBUF = 256960

It appears that reducing READABLE_UNIX_FD_DROP_DEAD_TIMEVAL from the 
default of 2.0 seconds may be a reasonable next step to reduce the 
volume of EAGAIN errors under load, but other than a "conservative" 
value of 2.0 and a "doesn't work" value of 0.0, I'm having a hard time 
picking a starting point to iterate around.

As an aside, the source mentions that the timeout is required to work 
around a kernel bug,  though without additional information it's not 
clear if the bug has been addressed.  Is the timeout still required?

Cheers,

Dean