httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jeff Trawick <traw...@gmail.com>
Subject Re: [users@httpd] mod_proxy doesn't persist connections to php-fpm
Date Fri, 15 Nov 2013 16:51:17 GMT
On Thu, Nov 14, 2013 at 5:02 PM, Jim Jagielski <jim@jagunet.com> wrote:

> stop setting it all the time in that particular case?
> Would a ->notes work?
>

I'm thinking along these lines:

FastCGI connections should continue to default to closing connections even
with the default disablereuse=off since many setups will fail otherwise
under load.  (Even without the configuration migration concern it still
seems like a good idea.)

We could state that disablereuse is for protocol handlers which default to
reusing connections (e.g., http), and add enablereuse which is for protocol
handlers which default to NOT reusing connections (e.g., FastCGI).



> On Nov 14, 2013, at 4:29 PM, Jeff Trawick <trawick@gmail.com> wrote:
>
> > Need a way to stop setting backend->close without breaking other users.
> >
> > FastCGI-specific keyword parameter?  envvar?
> >
> > ---------- Forwarded message ----------
> > From: Jeff Trawick <trawick@gmail.com>
> > Date: Thu, Nov 14, 2013 at 4:26 PM
> > Subject: Re: [users@httpd] mod_proxy doesn't persist connections to
> php-fpm
> > To: "users@httpd.apache.org" <users@httpd.apache.org>
> >
> >
> > On Thu, Nov 14, 2013 at 4:12 PM, Chandler, Dean A <
> dean.a.chandler@intel.com> wrote:
> > Hi,
> >
> >                 I am trying to run Apache 2.4 web server using mod_proxy
> and proxy_fcgi to proxy php requests to the PHP-FPM running on same
> machine.  I am pretty much using default setup for php-fpm.ini with port at
> 9000.  My problem is that mod_proxy is closing the connection after every
> request is complete so I end up with 1000’s of sockets in TIME_WAIT and
> eventually apache quits creating sockets. I am using the following proxy
> statement to send requests to the php-fpm process.
> >
> >
> > Funny...  I sent this long explanation to somebody recently with a
> suggestion on what to try:
> >
> > mod_proxy_fcgi should share mod_proxy's general ability to pool
> connections to a backend, but there has always been line of code in
> mod_proxy_fcgi that marks all connections for closure at the end of the
> request.  I just found the commit from 7 years ago that does it:
> >
> > http://svn.apache.org/viewvc?view=revision&revision=383278
> >
> > That line has subsequently moved around a little and the field changed;
> it looks like this now:
> >
> >     /* XXX Setting close to 0 is a great way to end up with
> >      *     timeouts at this point, since we lack good ways to manage the
> >      *     back end fastcgi processes.  This should be revisited when we
> >      *     have a better story on that part of things. */
> >     backend->close = 1;
> >
> > I think the point of the commit message is that:
> >
> > * typically you have small connection capacity in the FastCGI application
> > * typically your Apache configuration has a number of Apache child
> processes handling client requests
> >
> > In this typical scenario you can easily have a number of connections to
> the FastCGI application which are ready to be reused but they are owned by
> specific Apache child processes and the Apache child handling a request may
> not be the one that already has the connection, and the FastCGI app may not
> accept more connections until some of the other ones are closed.  (I.e.,
> the new request waits for some timeout in the app which allows it to close
> an existing connection and accept a new one).
> >
> > If you have configured Apache with a very small number of child
> processes and YOUR-BACKEND has good connection capacity (i.e., will accept
> many concurrent connections), you could try commenting out that line
> "backend->close = 1" in the bit of code shown above and see how it works
> for you.  (Don't comment out every occurrence of "backend->close = 1",
> since the backend connection should be closed after certain types of
> errors.)
> >
> > Assuming that it works fine, check with netstat to see if the typical
> number of connections to YOUR-BACKEND decreased any.
> >
> > Reusing the same connections is only effective with a relatively small
> number of Apache child processes.  (I guess you are using Event or Worker
> MPM?)
> >
> >
> >
> >
> >
> > <LocationMatch ^/(.*\.php(/.*)?)$ >
> >
> >        ProxyPass fcgi://127.0.0.1:9000/home/httpbld/htdocs/$1ttl=300000 keepalive=On
connectiontimeout=300 ttl=300 max=128
> >
> > </LocationMatch>
> >
> >
> >
> > Below is log file showing connections
> >
> >
> >
> >
> >
> > [Wed Nov 13 11:42:56.176124 2013] [proxy:debug] [pid 225428:tid
> 139934623480576] proxy_util.c(2194): [client 220.6.6.158:34023] AH00947:
> connected /home/httpbld/htdocs/status.html/status to 127.0.0.1:9000
> >
> > [Wed Nov 13 11:42:56.176159 2013] [proxy:trace2] [pid 225428:tid
> 139934623480576] proxy_util.c(2446): FCGI: fam 2 socket created to connect
> to 127.0.0.1
> >
> > [Wed Nov 13 11:42:56.176985 2013] [proxy_fcgi:trace4] [pid 225428:tid
> 139934623480576] util_script.c(521): [client 220.6.6.158:34023] Headers
> from script 'status':
> >
> > [Wed Nov 13 11:42:56.177038 2013] [proxy_fcgi:trace4] [pid 225428:tid
> 139934623480576] util_script.c(522): [client 220.6.6.158:34023]
> X-Powered-By: PHP/5.5.5
> >
> > [Wed Nov 13 11:42:56.177060 2013] [proxy_fcgi:trace4] [pid 225428:tid
> 139934623480576] util_script.c(522): [client 220.6.6.158:34023]
> Expires: Thu, 01 Jan 1970 00:00:00 GMT
> >
> > [Wed Nov 13 11:42:56.177071 2013] [proxy_fcgi:trace4] [pid 225428:tid
> 139934623480576] util_script.c(522): [client 220.6.6.158:34023]
> Cache-Control: no-cache, no-store, must-revalidate, max-age=0
> >
> > [Wed Nov 13 11:42:56.177082 2013] [proxy_fcgi:trace4] [pid 225428:tid
> 139934623480576] util_script.c(522): [client 220.6.6.158:34023]
> Content-Type: text/plain
> >
> > [Wed Nov 13 11:42:56.177196 2013] [proxy:debug] [pid 225428:tid
> 139934623480576] proxy_util.c(2035): AH00943: FCGI: has released connection
> for (127.0.0.1)
> >
> >
> >
> > Please let me know if there is any way to enable reuse of connection to
> the php-fpm process.
> >
> >
> >
> >                 Thanks,
> >
> >                                 Dean..
> >
> >
> >
> >
> > --
> > Born in Roswell... married an alien...
> > http://emptyhammock.com/
> >
> >
> >
> > --
> > Born in Roswell... married an alien...
> > http://emptyhammock.com/
>
>


-- 
Born in Roswell... married an alien...
http://emptyhammock.com/

Mime
View raw message