]> granicus.if.org Git - apache/commitdiff
mpm_event: avoid AH00484 with idle threads
authorEric Covener <covener@apache.org>
Wed, 10 Oct 2018 21:47:53 +0000 (21:47 +0000)
committerEric Covener <covener@apache.org>
Wed, 10 Oct 2018 21:47:53 +0000 (21:47 +0000)
mpm_event: Stop issuing AH00484 "server reached MaxRequestWorkers..." when
there are still idle threads available. When there are less idle threads than
MinSpareThreads, issue new one-time message AH10159. Matches worker MPM.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1843513 13f79535-47bb-0310-9956-ffa450edef68

CHANGES
docs/log-message-tags/next-number
server/mpm/event/event.c

diff --git a/CHANGES b/CHANGES
index 47c9d3cf1397024287cdbbbff674ee1de6b4942a..ec01e04e0c946d8c8a01f7474fc442268fe1364c 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,11 @@
                                                          -*- coding: utf-8 -*-
 Changes with Apache 2.5.1
 
+  *) mpm_event: Stop issuing AH00484 "server reached MaxRequestWorkers..." when
+     there are still idle threads available. When there are less idle threads than
+     MinSpareThreads, issue new one-time message AH10159. Matches worker MPM.
+     [Eric Covener]
+
   *) mod_http2: adding defensive code for stream EOS handling, in case the request handler
      missed to signal it the normal way (eos buckets). Addresses github issues 
      https://github.com/icing/mod_h2/issues/164, https://github.com/icing/mod_h2/issues/167
index 9c11cc094f339553c2baae52e8b11afcb8ec31e6..dc347d6cf065dcdaf66bc34727fccd700efed927 100644 (file)
@@ -1 +1 @@
-10159
+10160
index e491927103e59f73a04f9467f106707955b90a93..1458a8cc80b64fff3a73398fe87cbf95bf876687 100644 (file)
@@ -401,6 +401,7 @@ typedef struct event_retained_data {
     int first_thread_limit;
     int sick_child_detected;
     int maxclients_reported;
+    int near_maxclients_reported;
     /*
      * The max child slot ever assigned, preserved across restarts.  Necessary
      * to deal with MaxRequestWorkers changes across AP_SIG_GRACEFUL restarts.
@@ -3114,13 +3115,23 @@ static void perform_idle_server_maintenance(int child_bucket, int num_buckets)
     }
     else if (idle_thread_count < min_spare_threads / num_buckets) {
         if (active_thread_count >= max_workers) {
-            if (!retained->maxclients_reported) {
-                /* only report this condition once */
-                ap_log_error(APLOG_MARK, APLOG_ERR, 0, ap_server_conf, APLOGNO(00484)
-                             "server reached MaxRequestWorkers setting, "
-                             "consider raising the MaxRequestWorkers "
-                             "setting");
-                retained->maxclients_reported = 1;
+            if (0 == idle_thread_count) { 
+                if (!retained->maxclients_reported) {
+                    ap_log_error(APLOG_MARK, APLOG_ERR, 0, ap_server_conf, APLOGNO(00484)
+                                 "server reached MaxRequestWorkers setting, "
+                                 "consider raising the MaxRequestWorkers "
+                                 "setting");
+                    retained->maxclients_reported = 1;
+                }
+             }
+             else { 
+                if (!retained->near_maxclients_reported) {
+                    ap_log_error(APLOG_MARK, APLOG_ERR, 0, ap_server_conf, APLOGNO(10159)
+                            "server is within MinSpareThreads of "
+                            "MaxRequestWorkers, consider raising the "
+                            "MaxRequestWorkers setting");
+                    retained->near_maxclients_reported = 1;
+                }
             }
             retained->idle_spawn_rate[child_bucket] = 1;
         }