On Sat, Apr 30, 2016 at 1:04 PM, Yann Ylavic <[email protected]> wrote:
>
> How about:
>
> Index: server/mpm/event/event.c
> ===================================================================
> --- server/mpm/event/event.c (revision 1741696)
> +++ server/mpm/event/event.c (working copy)
> @@ -2857,7 +2857,7 @@ static void perform_idle_server_maintenance(int ch
> (status == SERVER_GRACEFUL);
> any_dead_threads = any_dead_threads || (status == SERVER_DEAD);
> all_dead_threads = all_dead_threads &&
> - (status == SERVER_DEAD || status == SERVER_GRACEFUL);
> + (status == SERVER_DEAD);
>
> /* We consider a starting server as idle because we started it
> * at least a cycle ago, and if it still hasn't finished starting
> _
>
> AIUI, that would (re)use *in priority* scoreboard entries of processes
> *fully* idle.
> So possibly admins could configure ServerLimit = N *
> (MaxRequestWorkers / ThreadsPerChild), where N would be the number of
> graceful restarts expected to not mix worker entries of old/new
> generation processes.
Hmm, not that easy actually.
perform_idle_server_maintenance() is currently based on
ap_daemons_limit processes (as possibly are codes using
AP_MPMQ_MAX_DAEMONS), not on server_limit.
Using the spare "server_limit - ap_daemons_limit" room at runtime
would require changing ap_daemons_limit dynamically/accordingly...
Is setting "AP_MPMQ_MAX_DAEMONS = server_limit" an option with
mpm_{event,worker}, so that we could make dynamic ap_daemons_limit
internal to those MPMs, whereas AP_MPMQ_MAX_DAEMONS users would
continue to "work"?