You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by yl...@apache.org on 2021/09/08 08:25:29 UTC

svn commit: r1893109 - in /httpd/httpd/branches/2.4.x: ./ CHANGES server/mpm/event/event.c

Author: ylavic
Date: Wed Sep  8 08:25:29 2021
New Revision: 1893109

URL: http://svn.apache.org/viewvc?rev=1893109&view=rev
Log:
Merge r1893014, r1893073 from trunk:


mpm_event: Fix children processes possibly not stopped on graceful restart.

The number of children spawned can go above active_daemons_limit due to
exponential idle_spawn_rate growth (x 2), enforce the upper limit in
perform_idle_server_maintenance().  PR 63169.

Submitted by: Joel Self <joelself gmail.com>


mpm_event: Follow up to r1893014: log when children are not spawned.

Log at trace1 level when active_daemons >= active_daemons_limit and we won't
spawn children. Reset free_length to avoid negative value in this case too.


Submitted by: ylavic
Reviewed by: ylavic, covener, rpluem

Modified:
    httpd/httpd/branches/2.4.x/   (props changed)
    httpd/httpd/branches/2.4.x/CHANGES
    httpd/httpd/branches/2.4.x/server/mpm/event/event.c

Propchange: httpd/httpd/branches/2.4.x/
------------------------------------------------------------------------------
  Merged /httpd/httpd/trunk:r1893014,1893073

Modified: httpd/httpd/branches/2.4.x/CHANGES
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/CHANGES?rev=1893109&r1=1893108&r2=1893109&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x/CHANGES [utf-8] (original)
+++ httpd/httpd/branches/2.4.x/CHANGES [utf-8] Wed Sep  8 08:25:29 2021
@@ -1,6 +1,9 @@
                                                          -*- coding: utf-8 -*-
 Changes with Apache 2.4.49
 
+  *) mpm_event: Fix children processes possibly not stopped on graceful
+     restart.  PR 63169.  [Joel Self <joelself gmail.com>]
+
   *) mod_proxy: Fix a potential infinite loop when tunneling Upgrade(d)
      protocols from mod_proxy_http, and a timeout triggering falsely when
      using mod_proxy_wstunnel, mod_proxy_connect or mod_proxy_http with

Modified: httpd/httpd/branches/2.4.x/server/mpm/event/event.c
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/server/mpm/event/event.c?rev=1893109&r1=1893108&r2=1893109&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x/server/mpm/event/event.c (original)
+++ httpd/httpd/branches/2.4.x/server/mpm/event/event.c Wed Sep  8 08:25:29 2021
@@ -2929,6 +2929,20 @@ static void perform_idle_server_maintena
             if (free_length > retained->idle_spawn_rate[child_bucket]) {
                 free_length = retained->idle_spawn_rate[child_bucket];
             }
+            if (free_length + active_daemons > active_daemons_limit) {
+                if (active_daemons < active_daemons_limit) {
+                    free_length = active_daemons_limit - active_daemons;
+                }
+                else {
+                    ap_log_error(APLOG_MARK, APLOG_TRACE1, 0, ap_server_conf,
+                                 "server is at active daemons limit, spawning "
+                                 "of %d children cancelled: %d/%d active, "
+                                 "rate %d", free_length,
+                                 active_daemons, active_daemons_limit,
+                                 retained->idle_spawn_rate[child_bucket]);
+                    free_length = 0;
+                }
+            }
             if (retained->idle_spawn_rate[child_bucket] >= 8) {
                 ap_log_error(APLOG_MARK, APLOG_INFO, 0, ap_server_conf, APLOGNO(00486)
                              "server seems busy, (you may need "