fastcgi_keep_conn + PHP-FPM

Maxim Dounin mdounin at mdounin.ru
Wed Feb 6 16:22:34 UTC 2013


Hello!

On Wed, Feb 06, 2013 at 11:00:42AM +0100, Steffen Weber wrote:

> The changelog of nginx 1.3.12 mentions a bugfix in the "fastcgi_keep_conn"
> directive. Therefore I decided to give this feature a try.
> 
> Snippet from nginx.conf:
> 
>         fastcgi_keep_conn on;
> 
>         upstream php {
>                 server 127.0.0.1:9000;
>                 keepalive 6;
>         }
> 
> Snippet from php-fpm.conf:
> 
>         listen = 127.0.0.1:9000
>         pm = static
>         pm.max_children = 4
>         pm.max_requests = 5 # very low for demo purpose
> 
> Now I run the following command:
> 
> while true; do wget http://localhost/test.php -O- > /dev/null; done
> 
> After 5 requests (pm.max_requests = 5) wget hangs and nginx logs the
> following error:
> 
> 2013/02/06 10:47:09 [error] 6795#0: *6 readv() failed (104: Connection
> reset by peer) while reading upstream, client: ::ffff:127.0.0.1, server:
> localhost, request: "GET /test.php HTTP/1.1", upstream: "fastcgi://
> 127.0.0.1:9000", host: "localhost"
> 
> It seems that nginx cannot cope with a restarting php-fpm process. Anything
> I can do?

>From error message it looks like php-fpm closed connection
uncleanly (socket closed with unread data in socket buffer?).

Not idea about details as I can't reproduce it here on FreeBSD 
(connection reset on close if there are unread data in socket 
buffer is Linux-specific), but I don't think there is a room for 
improvement on nginx side.  You may want to ask someone from 
php-fpm side to look into this (anight, are you here?).

-- 
Maxim Dounin
http://nginx.com/support.html



More information about the nginx mailing list