From ed6c8a067877bb99724813b311d4024c6af3c108 Mon Sep 17 00:00:00 2001 From: Eric Covener Date: Wed, 10 Oct 2018 21:47:53 +0000 Subject: [PATCH] mpm_event: avoid AH00484 with idle threads 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 | 5 +++++ docs/log-message-tags/next-number | 2 +- server/mpm/event/event.c | 25 ++++++++++++++++++------- 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/CHANGES b/CHANGES index 47c9d3cf13..ec01e04e0c 100644 --- 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 diff --git a/docs/log-message-tags/next-number b/docs/log-message-tags/next-number index 9c11cc094f..dc347d6cf0 100644 --- a/docs/log-message-tags/next-number +++ b/docs/log-message-tags/next-number @@ -1 +1 @@ -10159 +10160 diff --git a/server/mpm/event/event.c b/server/mpm/event/event.c index e491927103..1458a8cc80 100644 --- a/server/mpm/event/event.c +++ b/server/mpm/event/event.c @@ -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; } -- 2.40.0