Hello!
We are using Apache as a
front end for communication to a number of devices using
TR69 (SOAP over HTTP). In order to resolve a problem with
a particular device, I need to enable KeepAlive, but upon
doing so I find that a number of our other devices drop
connection to the server until they are rebooted. The
reboot requirement is an acknowledge bug from the vendor,
but I would like to resolve the problem with the device
communication as it suggests capacity issues with our
current configuration of Apache.
At present, with KeepAlive
disabled, the command
netstat -plan|grep :80|wc -l
returns a value between 5000
and 5500. This drops dramatically if keepalive is enabled,
to around 300 to 400.
At present, Apache is
configured as:
Timeout 120
KeepAlive Off
MaxKeepAliveRequests 100
KeepAliveTimeout 5
<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 1024
MaxClients 1024
MaxRequestsPerChild 0
#unlimited
</IfModule>
<IfModule worker.c>
StartServers 2
MaxClients 1000
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
The issue appears to be that
when I enable KeepAlive with this configuration Apache
intermittently stops accepting connections on the socket.
We found that before changing the httpd.conf file (we
raised the max clients and maxrequestsperchild variables)
and enabling KeepAlive meant that I was intermittently
unable to telnet into the server on port 80, suggesting a
capacity issue.
I am wondering how high would
be an acceptable limit for these values, and if anyone had
any other ideas for what might be causing this.
Thanks in advance!