On 11/30/21 2:53 PM, Eric Covener wrote:
> On Fri, Oct 15, 2021 at 6:29 AM <yla...@apache.org> wrote:
>>
>> Author: ylavic
>> Date: Fri Oct 15 10:29:00 2021
>> New Revision: 1894285
>>
>> URL: http://svn.apache.org/viewvc?rev=1894285&view=rev
>> Log:
>> mpm_event: Restart stopping of idle children after a load peak. PR 65626.
>>
>> r1770752 added an heuristic to avoid stopping children when the load triggers
>> MaxSpareThreads but children take some time to shut down until the point 
>> where
>> active_daemons_limit/ServerLimit is reached (scoreboard full) and no child 
>> gets
>> created to handle incoming connections.
>>
>> However when this happens there is nothing to stop children again when the 
>> load
>> settles down (besides MaxRequestsPerChild, which may be 0) so let's restart 
>> to
>> stop children again if/when idle_thread_count reaches max_workers / 4.
> 
> Wouldn't the slow-to-exit (but eventually exiting) gracefully shutting
> down processes eventually bring total_daemons down and start killing
> more processes again?
> It seems like if they are not slow but effectively never exiting, the
> change could do more harm by filling the scoreboard quicker.
> 
> But then I can't explain the PR this came from
> https://bz.apache.org/bugzilla/show_bug.cgi?id=65626

The issue is that in the PR ServerLimit == MaxRequestWorkers / ThreadsPerChild.
Once you reached ServerLimit and there are no dying children, child processes 
will not be shutdown any longer.
>From a quick glance this can only happen if ServerLimit == MaxRequestWorkers / 
>ThreadsPerChild. If it is larger
shutdown should start again some time as some children must be in the process 
of dying.

Regards

RĂ¼diger

Reply via email to