From: Greg Ames Date: Wed, 3 May 2006 00:30:56 +0000 (+0000) Subject: PR 39275. don't fork MaxClients worth of processes if child_init or fork() are X-Git-Tag: 2.3.0~2409 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0da0ca701b7b3cafd137bd7b8d6910b3280a53b2;p=thirdparty%2Fapache%2Fhttpd.git PR 39275. don't fork MaxClients worth of processes if child_init or fork() are slow. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@399099 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/CHANGES b/CHANGES index 618bd5e0fd1..2c7fcdc9bdc 100644 --- a/CHANGES +++ b/CHANGES @@ -2,6 +2,10 @@ Changes with Apache 2.3.0 [Remove entries to the current 2.0 and 2.2 section below, when backported] + *) worker and event MPMs: fix excessive forking if fork() or child_init + take a long time. PR 39275. + [Greg Ames, Jeff Trawick, Chris Darroch ] + *) Add mod_proxy_fcgi, a FastCGI back end for mod_proxy. [Garrett Rooney, Jim Jagielski, Paul Querna] diff --git a/server/mpm/experimental/event/event.c b/server/mpm/experimental/event/event.c index fb2da0311b6..7c302dfbaa6 100644 --- a/server/mpm/experimental/event/event.c +++ b/server/mpm/experimental/event/event.c @@ -1730,7 +1730,7 @@ static void perform_idle_server_maintenance(void) */ if (ps->pid != 0) { /* XXX just set all_dead_threads in outer for loop if no pid? not much else matters */ - if (status <= SERVER_READY && status != SERVER_DEAD && + if (status <= SERVER_READY && !ps->quiescing && ps->generation == ap_my_generation) { ++idle_thread_count; } diff --git a/server/mpm/worker/worker.c b/server/mpm/worker/worker.c index 7694431448a..347c11fa429 100644 --- a/server/mpm/worker/worker.c +++ b/server/mpm/worker/worker.c @@ -1422,7 +1422,7 @@ static void perform_idle_server_maintenance(void) */ if (ps->pid != 0) { /* XXX just set all_dead_threads in outer for loop if no pid? not much else matters */ - if (status <= SERVER_READY && status != SERVER_DEAD && + if (status <= SERVER_READY && !ps->quiescing && ps->generation == ap_my_generation) { ++idle_thread_count;