On 9/21/21 9:56 AM, Ruediger Pluem wrote:
> I am just investigating a case where a httpd 2.4.49 gets stuck and as part of 
> the investigation
> I am asking myself if we should count processes that die because of 
> MaxRequestsPerChild still count
> to active_daemons?
> Because if we do like today we may prevent replacement processes to be 
> started while the other processes die, e.g. if
> active_daemons hits active_daemons_limit.

Answering to my own question:

We do decrement active_daemons if we shutdown a process because we have too 
much idle threads, but we don't do it if the child
process decides on its own to die because of MaxRequestsPerChild. The below 
patch shoudl fix this. Opinions?

Index: server/mpm/event/event.c
===================================================================
--- server/mpm/event/event.c    (revision 1893497)
+++ server/mpm/event/event.c    (working copy)
@@ -3118,6 +3118,10 @@
         }
         ps = &ap_scoreboard_image->parent[i];
         if (ps->pid != 0) {
+            if (ps->quiescing == 1) {
+                ps->quiescing = 2;
+                active_daemons--;
+            }
             for (j = 0; j < threads_per_child; j++) {
                 ws = &ap_scoreboard_image->servers[i][j];
                 status = ws->status;
@@ -3197,7 +3201,6 @@
             ap_mpm_podx_signal(retained->buckets[child_bucket].pod,
                                AP_MPM_PODX_GRACEFUL);
             retained->idle_spawn_rate[child_bucket] = 1;
-            active_daemons--;
         } else {
             ap_log_error(APLOG_MARK, APLOG_TRACE5, 0, ap_server_conf,
                          "Not shutting down child: total daemons %d / "


Regards

RĂ¼diger

Reply via email to