]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
Stop holding open connections to the backend fastcgi processes. At
authorGarrett Rooney <rooneg@apache.org>
Sun, 5 Mar 2006 04:33:44 +0000 (04:33 +0000)
committerGarrett Rooney <rooneg@apache.org>
Sun, 5 Mar 2006 04:33:44 +0000 (04:33 +0000)
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

index 8f29a178784b89a5364566930c7951a05e60ace0..d42c10eb977d99b0398b889912890f1397cb0ef5 100644 (file)
@@ -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,