From d215e258b8a29d1b40d6bb5be8a22d53623b064c Mon Sep 17 00:00:00 2001 From: Garrett Rooney Date: Sun, 5 Mar 2006 04:33:44 +0000 Subject: [PATCH] Stop holding open connections to the backend fastcgi processes. At this point we lack a good way to manage them, and thus it's really easy to end up with situations where you get weird timeouts because other worker process are holding all the connections open. This allows Rails applications to reliably work with mod_proxy_fcgi. * modules/proxy/mod_proxy_fcgi.c (dispatch): Add a timeout for our poll. This should be controlled by a config option of some sort, but for now just hardcode it. (proxy_fcgi_handler): Set close_on_recycle to 1, so we don't hold open connections to the fastcgi processes. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@383278 13f79535-47bb-0310-9956-ffa450edef68 --- modules/proxy/mod_proxy_fcgi.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/modules/proxy/mod_proxy_fcgi.c b/modules/proxy/mod_proxy_fcgi.c index 8f29a178784..d42c10eb977 100644 --- a/modules/proxy/mod_proxy_fcgi.c +++ b/modules/proxy/mod_proxy_fcgi.c @@ -527,7 +527,8 @@ static apr_status_t dispatch(proxy_conn_rec *conn, request_rec *r, apr_size_t len; int n; - rv = apr_poll(&pfd, 1, &n, -1); + /* XXX don't hardcode 30 seconds */ + rv = apr_poll(&pfd, 1, &n, apr_time_from_sec(30)); if (rv != APR_SUCCESS) { break; } @@ -881,7 +882,13 @@ static int proxy_fcgi_handler(request_rec *r, proxy_worker *worker, } backend->is_ssl = 0; - backend->close_on_recycle = 0; + + /* XXX Setting close_on_recycle 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_on_recycle = 1; /* Step One: Determine Who To Connect To */ status = ap_proxy_determine_connection(p, r, conf, worker, backend, -- 2.47.2