At Rails Machine, we have recently seen problems on a few deploys where Apache’s workers become overwhelmed and unable to serve new requests, even static ones. While we haven’t identified the root cause yet, we suspect either a recent update to The Browser Which Shall Remain Unnamed causes it to abuse the length of time connections stay alive or there may be something lurking in the recent 2.2.10 Passenger release.
Don’t worry though, because I have updates from the still about Moonshine’s
Apache management. Previously, moonshine did not need to change anything in
/etc/apache2/apache2.conf, so it defaulted to Ubuntu’s
package… until now.
The primary motivation for doing this was specifically to turn off
If you want to turn
KeepAlive BACK on, you need to add something like this
to your moonshine.yml:
:apache: :keep_alive: 'On'
On needs to be quoted or YAML will convert it to
value, which would not be valid for the configuration. As a side note, I
should probably find a fix for that.
If you are running a high-traffic site, and still experience problems not
having idle Apache workers with
KeepAlive Off, you may get some mileage out
To take advantage of these changes, you just need to update moonshine:
# if managed with script/plugin script/plugin install # if installed using a submodule git submodule update
For reference, here’s the commit:
commit 3f46140641fb22ce25e0b2b81497d4aec88e90b2 Author: Joshua Nichols <email@example.com> Date: Fri Feb 26 13:49:20 2010 -0500 Added management of /etc/apache2/apache2.conf You can now specify the following apache directives using configuration: * Timeout => :timeout (default 300) * KeepAlive => :keep_alive (default 'Off') * MaxKeepAliveRequests => :max_keep_alive_requests (default 100) * MaxKeepAliveTimeout => :keep_alive_timeout (default 15) * MaxClients => :max_clients (default 150) * ServerLimit => :server_limit (default 16) * Timeout => :timeout (default 300)