ok, so you've got 2000M of memory, and apache is using 12M per process
2000/12 = 166
so your maxclients should be lower than 160.
something like
Code:
<IfModule mpm_prefork_module>
StartServers 20
MinSpareServers 20
MaxSpareServers 40
MaxClients 150
MaxRequestsPerChild 9000
</IfModule>
The min and maxspareservers isn't too important, maxclients is, maxrequestperchild helps if there is a memory leak.
This won't make apache handle more load, it will stop it using more memory than you have available, and it won't
fall over during high load. during high load, clients won't get connection reset by peer, but it might take a few seconds
for the page to start loading.
are you running a database on that box? maybe postgresql?
are you serving images, css and javascript too?
I'll add that you currently have over 200 apache processes, and some of them have been running for quite a few seconds.
1 would definitely turn off keepalives, and maybe try gradually reducing maxclients, and rerun free -m and vmstat 1 10
and when you answer the question about serving images, css and js, I can add some for things for you to think about/try