I have to deal with mod_cluster, and it is extremely memory hungry (in the GB
range per process). As mitigation, I'm trying to get down to a single apache
worker process per host when we aren't under heavy load. That would save me
about 6GB per host.
We have several hosts running the exact same thing behind a load balancer and
I've never seen a crash, so I'm not concerned with running a single instance.
Running 4 20 thread instances is almost 4 times the memory of this one
instance, for example.
This is the relevant portion of the configuration:
LoadModule mpm_event_module modules/mod_mpm_event.so
ServerLimit 8
StartServers 1
ThreadLimit 80
ThreadsPerChild 80
MaxRequestWorkers 640
MaxSpareThreads 120
MinSpareThreads 8
The top of mod-Status:
Apache Server Status for HOSTNAME (via 10.X.X.X)
Server Version: CUSTOMSTRING/2.4.18 (Unix) OpenSSL/1.0.1e-fips
mod_cluster/1.3.1.Final
Server MPM: event
Server Built: Dec 16 2015 16:07:29
________________________________________
Current Time: Tuesday, 17-May-2016 14:37:00 EDT
Restart Time: Monday, 02-May-2016 09:36:16 EDT
Parent Server Config. Generation: 10
Parent Server MPM Generation: 9
Server uptime: 15 days 5 hours 44 seconds
Server load: 0.72 0.75 0.89
Total accesses: 39007867 - Total Traffic: 1.7 GB
CPU Usage: u2533.2 s168.49 cu0 cs0 - .206% CPU load
29.7 requests/sec - 1364 B/second - 45 B/request
5 requests currently being processed, 155 idle workers
PID Connections Threads Async connections
total accepting busy idle
writing keep-alive closing
11397 35 yes 2 78 0 33
0
29323 26 yes 3 77 0 23
0
Sum 61 5 155 0
56 0
................................................................
................________________________________________________
_______W____W___________________................................
................................................____________W___
______W__________________________________W______________________
................................................................
................................................................
................................................................
................................................................
................................................................
The idle threads here usually stays around the mid 150s. These particular
workers were started about 40 minutes apart, but I have the similar pattern
showing in other regions with similar start times and the same workers being up
for over a month.
Given the MaxSpareThreads 120, I would expect this to drop the second worker
fairly quickly and work as described
(https://httpd.apache.org/docs/2.4/mod/mpm_common.html#maxsparethreads). But,
that's not happening and I'm stuck with two processes handling the load. It's
acting almost as if there is a "ServerMin 2" directive hard-coded or something.
This certainly looks like a bug (whether in the documentation or the code
itself). Any suggestions on how to get this to work before I submit a bug
ticket?
Thank you,
Rick Houser