y***@apache.org
2014-10-07 21:59:02 UTC
Author: ylavic
Date: Tue Oct 7 21:59:02 2014
New Revision: 1629990
URL: http://svn.apache.org/r1629990
Log:
core: follow up to r1629909: fix min_spare_threads lower bound and check wrt num_buckets.
Modified:
httpd/httpd/trunk/server/mpm/event/event.c
httpd/httpd/trunk/server/mpm/eventopt/eventopt.c
httpd/httpd/trunk/server/mpm/worker/worker.c
Modified: httpd/httpd/trunk/server/mpm/event/event.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/server/mpm/event/event.c?rev=1629990&r1=1629989&r2=1629990&view=diff
==============================================================================
--- httpd/httpd/trunk/server/mpm/event/event.c (original)
+++ httpd/httpd/trunk/server/mpm/event/event.c Tue Oct 7 21:59:02 2014
@@ -2809,7 +2809,7 @@ static void perform_idle_server_maintena
ap_mpm_podx_signal(pod[child_bucket], AP_MPM_PODX_GRACEFUL);
retained->idle_spawn_rate[child_bucket] = 1;
}
- else if (idle_thread_count < min_spare_threads) {
+ else if (idle_thread_count < min_spare_threads / num_buckets) {
/* terminate the free list */
if (free_length == 0) { /* scoreboard is full, can't fork */
@@ -3004,7 +3004,10 @@ static int event_run(apr_pool_t * _pconf
restart_pending = shutdown_pending = 0;
set_signals();
+
/* Don't thrash... */
+ if (min_spare_threads < threads_per_child * num_buckets)
+ min_spare_threads = threads_per_child * num_buckets;
if (max_spare_threads < min_spare_threads + threads_per_child * num_buckets)
max_spare_threads = min_spare_threads + threads_per_child * num_buckets;
@@ -3196,7 +3199,6 @@ static int event_open_logs(apr_pool_t *
}
enable_default_listener = 1;
-
ap_duplicate_listeners(ap_server_conf, pconf, num_buckets);
pod = apr_palloc(pconf, sizeof(ap_pod_t *) * num_buckets);
Modified: httpd/httpd/trunk/server/mpm/eventopt/eventopt.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/server/mpm/eventopt/eventopt.c?rev=1629990&r1=1629989&r2=1629990&view=diff
==============================================================================
--- httpd/httpd/trunk/server/mpm/eventopt/eventopt.c (original)
+++ httpd/httpd/trunk/server/mpm/eventopt/eventopt.c Tue Oct 7 21:59:02 2014
@@ -2630,7 +2630,7 @@ static void perform_idle_server_maintena
ap_mpm_podx_signal(pod[child_bucket], AP_MPM_PODX_GRACEFUL);
retained->idle_spawn_rate[child_bucket] = 1;
}
- else if (idle_thread_count < min_spare_threads) {
+ else if (idle_thread_count < min_spare_threads / num_buckets) {
/* terminate the free list */
if (free_length == 0) { /* scoreboard is full, can't fork */
@@ -2825,7 +2825,10 @@ static int event_run(apr_pool_t * _pconf
restart_pending = shutdown_pending = 0;
set_signals();
+
/* Don't thrash... */
+ if (min_spare_threads < threads_per_child * num_buckets)
+ min_spare_threads = threads_per_child * num_buckets;
if (max_spare_threads < min_spare_threads + threads_per_child * num_buckets)
max_spare_threads = min_spare_threads + threads_per_child * num_buckets;
@@ -3009,7 +3012,6 @@ static int event_open_logs(apr_pool_t *
}
enable_default_listener = 0;
-
if ((num_listensocks = ap_setup_listeners(ap_server_conf)) < 1) {
ap_log_error(APLOG_MARK, APLOG_ALERT | level_flags, 0,
(startup ? NULL : s),
Modified: httpd/httpd/trunk/server/mpm/worker/worker.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/server/mpm/worker/worker.c?rev=1629990&r1=1629989&r2=1629990&view=diff
==============================================================================
--- httpd/httpd/trunk/server/mpm/worker/worker.c (original)
+++ httpd/httpd/trunk/server/mpm/worker/worker.c Tue Oct 7 21:59:02 2014
@@ -1616,7 +1616,7 @@ static void perform_idle_server_maintena
ap_mpm_podx_signal(pod[child_bucket], AP_MPM_PODX_GRACEFUL);
retained->idle_spawn_rate[child_bucket] = 1;
}
- else if (idle_thread_count < min_spare_threads) {
+ else if (idle_thread_count < min_spare_threads / num_buckets) {
/* terminate the free list */
if (free_length == 0) { /* scoreboard is full, can't fork */
@@ -1834,7 +1834,10 @@ static int worker_run(apr_pool_t *_pconf
restart_pending = shutdown_pending = 0;
set_signals();
+
/* Don't thrash... */
+ if (min_spare_threads < threads_per_child * num_buckets)
+ min_spare_threads = threads_per_child * num_buckets;
if (max_spare_threads < min_spare_threads + threads_per_child * num_buckets)
max_spare_threads = min_spare_threads + threads_per_child * num_buckets;
Date: Tue Oct 7 21:59:02 2014
New Revision: 1629990
URL: http://svn.apache.org/r1629990
Log:
core: follow up to r1629909: fix min_spare_threads lower bound and check wrt num_buckets.
Modified:
httpd/httpd/trunk/server/mpm/event/event.c
httpd/httpd/trunk/server/mpm/eventopt/eventopt.c
httpd/httpd/trunk/server/mpm/worker/worker.c
Modified: httpd/httpd/trunk/server/mpm/event/event.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/server/mpm/event/event.c?rev=1629990&r1=1629989&r2=1629990&view=diff
==============================================================================
--- httpd/httpd/trunk/server/mpm/event/event.c (original)
+++ httpd/httpd/trunk/server/mpm/event/event.c Tue Oct 7 21:59:02 2014
@@ -2809,7 +2809,7 @@ static void perform_idle_server_maintena
ap_mpm_podx_signal(pod[child_bucket], AP_MPM_PODX_GRACEFUL);
retained->idle_spawn_rate[child_bucket] = 1;
}
- else if (idle_thread_count < min_spare_threads) {
+ else if (idle_thread_count < min_spare_threads / num_buckets) {
/* terminate the free list */
if (free_length == 0) { /* scoreboard is full, can't fork */
@@ -3004,7 +3004,10 @@ static int event_run(apr_pool_t * _pconf
restart_pending = shutdown_pending = 0;
set_signals();
+
/* Don't thrash... */
+ if (min_spare_threads < threads_per_child * num_buckets)
+ min_spare_threads = threads_per_child * num_buckets;
if (max_spare_threads < min_spare_threads + threads_per_child * num_buckets)
max_spare_threads = min_spare_threads + threads_per_child * num_buckets;
@@ -3196,7 +3199,6 @@ static int event_open_logs(apr_pool_t *
}
enable_default_listener = 1;
-
ap_duplicate_listeners(ap_server_conf, pconf, num_buckets);
pod = apr_palloc(pconf, sizeof(ap_pod_t *) * num_buckets);
Modified: httpd/httpd/trunk/server/mpm/eventopt/eventopt.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/server/mpm/eventopt/eventopt.c?rev=1629990&r1=1629989&r2=1629990&view=diff
==============================================================================
--- httpd/httpd/trunk/server/mpm/eventopt/eventopt.c (original)
+++ httpd/httpd/trunk/server/mpm/eventopt/eventopt.c Tue Oct 7 21:59:02 2014
@@ -2630,7 +2630,7 @@ static void perform_idle_server_maintena
ap_mpm_podx_signal(pod[child_bucket], AP_MPM_PODX_GRACEFUL);
retained->idle_spawn_rate[child_bucket] = 1;
}
- else if (idle_thread_count < min_spare_threads) {
+ else if (idle_thread_count < min_spare_threads / num_buckets) {
/* terminate the free list */
if (free_length == 0) { /* scoreboard is full, can't fork */
@@ -2825,7 +2825,10 @@ static int event_run(apr_pool_t * _pconf
restart_pending = shutdown_pending = 0;
set_signals();
+
/* Don't thrash... */
+ if (min_spare_threads < threads_per_child * num_buckets)
+ min_spare_threads = threads_per_child * num_buckets;
if (max_spare_threads < min_spare_threads + threads_per_child * num_buckets)
max_spare_threads = min_spare_threads + threads_per_child * num_buckets;
@@ -3009,7 +3012,6 @@ static int event_open_logs(apr_pool_t *
}
enable_default_listener = 0;
-
if ((num_listensocks = ap_setup_listeners(ap_server_conf)) < 1) {
ap_log_error(APLOG_MARK, APLOG_ALERT | level_flags, 0,
(startup ? NULL : s),
Modified: httpd/httpd/trunk/server/mpm/worker/worker.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/server/mpm/worker/worker.c?rev=1629990&r1=1629989&r2=1629990&view=diff
==============================================================================
--- httpd/httpd/trunk/server/mpm/worker/worker.c (original)
+++ httpd/httpd/trunk/server/mpm/worker/worker.c Tue Oct 7 21:59:02 2014
@@ -1616,7 +1616,7 @@ static void perform_idle_server_maintena
ap_mpm_podx_signal(pod[child_bucket], AP_MPM_PODX_GRACEFUL);
retained->idle_spawn_rate[child_bucket] = 1;
}
- else if (idle_thread_count < min_spare_threads) {
+ else if (idle_thread_count < min_spare_threads / num_buckets) {
/* terminate the free list */
if (free_length == 0) { /* scoreboard is full, can't fork */
@@ -1834,7 +1834,10 @@ static int worker_run(apr_pool_t *_pconf
restart_pending = shutdown_pending = 0;
set_signals();
+
/* Don't thrash... */
+ if (min_spare_threads < threads_per_child * num_buckets)
+ min_spare_threads = threads_per_child * num_buckets;
if (max_spare_threads < min_spare_threads + threads_per_child * num_buckets)
max_spare_threads = min_spare_threads + threads_per_child * num_buckets;