From: Luca Toscano AsyncRequestWorkerFactor.
MaxRequestWorkers
/ ThreadsPerChild), meanwhile
- the Scoreboad is a representation of all the running processes and
+ the Scoreboard is a representation of all the running processes and
the status of their worker threads. If the scoreboard is full (so all the
threads have a state that is not idle) but the number of active requests
served is not MaxRequestWorkers,
@@ -158,17 +158,24 @@ of the AsyncRequestWorkerFactor.
but that are queued instead (up to the limit imposed by
ListenBacklog). Most of the times
the threads are stuck in the Graceful state, namely they are waiting to
- finish their work with a TCP connection to terminate and free a
+ finish their work with a TCP connection to safely terminate and free up a
scoreboard slot (for example handling long running requests, slow clients
- or a connection with keep-alive enabled). Two scenarios are very common:
+ or connections with keep-alive enabled). Two scenarios are very common:
MaxSpareThreads).
This is particularly problematic because when the load increases again,
- httpd will try to start more processes.
- If the pattern repeats, the number of processes can rise quite a bit.
+ httpd will try to start new processes.
+ If the pattern repeats, the number of processes can rise quite a bit,
+ ending up in a mixture of old processes trying to stop and new ones
+ trying to do some work.
From 2.4.24 onward, mpm-event is smarter and it is able to handle