MaxClients Apache configuration directive determines overall sociability of your web server. Thus it is really important that you set this directive to an appropriate value. Setting MaxClients directive without system assessment may result into unstable system and crash.
This directive controls how many simultaneous connections can be served. Any connection request from browsers that come in after that will be queued.
Tuning the Apache MaxClients parameter
One of the most critical hardware issue that affects your web server performance is RAM. If all the RAM is being consumed up by the Apache web server, system starts swapping. A web-server should never ever have to swap, as swapping increases the latency of each request beyond a point that users consider “fast enough”. This results into users hitting stop and reload, which in return further increases the load. You can, and should, control the MaxClients setting so that your server does not spawn so many children it starts swapping.
You can also learn to tweak some other directives of Apache web server to optimize its performance.
Determine the size of your average Apache process
In order to set MaxClients directive correctly we first need to know the average size of Apache processes in your system. Size of your Apache process mainly depends upon your web application. Use the following command to get the average size of Apache process.
#ps -ylC apache2 –sort:rss
#ps -ylC httpd –sort:rss
As you can see in the SZ column, my Apache process size is about 23 MB
Use the following formula:
MaxClients: ((Total_Memory)(1024)(MB) – Other_processes_memory) / 23
For Instance: I have 16 GB RAM, I might leave 2 GB free for any other processes.
MaxClients: ((16*1024) - 2048) / 23
Setting up Apache MaxClients directive value.
Navigate to the file
/etc/apache2/apache2.conf file on Debian/Ubuntu, and the
/etc/httpd/conf/httpd.conf file on CentOS/Fedora.
Now change the value of MaxClients parameter in configuration file.
Looks like there’s no MaxClients in those config files by default. At least not on ubuntu.
You can manually add this directive if it’s not already there…