Hi,

> Am 20.05.2015 um 02:06 schrieb Todd Mortimer <t...@opennet.ca>:
> 
> The attached patch fixes a problem I’ve been having with httpd +
> php_fpm + owncloud on 5.7. The patch is against 5.7-release.

Can you try with recent snapshot, and see if issue
still occurs, please?
Development happens in -current.

> After several days running owncloud with httpd, php_fpm started
> complaining about hitting pm.max_children, and top would show a
> bunch of idle php_fpm processes waiting on netio. Eventually httpd
> would start returning error 500 and owncloud would stop working.
> Restarting php_fpm or httpd would temporarily fix the issue. The
> same server with nginx did not have the same problem.
> 
> I’ve had this patch running for 5 days now, and php_fpm isnt leaving
> idle processes lying around anymore. I did run with some debugging
> output to verify that clt->clt_fd is sometimes not -1 when it is
> overwritten with the new socket fd.

IMHO your proposed fix is just a workaround.
Instead of 'blindly' close()'ing, better approach is to
figure out where the fd was leaked earlier.

Regards,
Joerg

> Index: server_fcgi.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/httpd/server_fcgi.c,v
> retrieving revision 1.52
> diff -u -p -u -p -r1.52 server_fcgi.c
> --- server_fcgi.c       23 Feb 2015 19:22:43 -0000      1.52
> +++ server_fcgi.c       15 May 2015 22:12:30 -0000
> @@ -31,6 +31,7 @@
> #include <stdio.h>
> #include <time.h>
> #include <ctype.h>
> +#include <unistd.h>
> #include <event.h>
> 
> #include "httpd.h"
> @@ -152,6 +153,9 @@ server_fcgi(struct httpd *env, struct cl
>               errstr = "failed to allocate evbuffer";
>               goto fail;
>       }
> +
> +       if (clt->clt_fd != -1)
> +               close(clt->clt_fd);
> 
>       clt->clt_fd = fd;
>       if (clt->clt_srvbev != NULL)
> 

Reply via email to