Graceful restarts can be really slow in 2.0 with prefork... the parent
is making a dummy connection on the pod MaxClients times, rather than a
connection for as many children as it has had; is that really necessary?
At least one of the connections will get the 3 second timeout without
the below change in my testing, which accounts for the delay.
Anecdotally we've seen it take up to a minute or more on idle-ish
servers during testing, and had user reports of the same.
Index: prefork.c
===================================================================
RCS file: /home/cvs/httpd-2.0/server/mpm/prefork/prefork.c,v
retrieving revision 1.279
diff -u -r1.279 prefork.c
--- prefork.c 27 Aug 2003 22:33:11 -0000 1.279
+++ prefork.c 16 Oct 2003 18:57:15 -0000
@@ -1123,7 +1123,7 @@
"Graceful restart requested, doing restart");
/* kill off the idle ones */
- ap_mpm_pod_killpg(pod, ap_daemons_limit);
+ ap_mpm_pod_killpg(pod, ap_max_daemons_limit);
/* This is mostly for debugging... so that we know what is still
* gracefully dealing with existing request. This will break