We have been testing with the following tunings on a similar linux box. I would be interested to here if your performance improves with this:
Linux Tuning :
set the following values in /etc/sysctl.conf
kernel.msgmni = 1024
kernel.sem = 1000 32000 32 512
fs.file-max = 2097152
fs.inode-max = 8388608
kernel.shmmax = 2147483648
### net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_syn_backlog = 1024
### some of these are invalid
net.ipv4.tcp_rfc1337=1
### some say use 1800
net.ipv4.tcp_keepalive_time=120
net.ipv4.tcp_keepalive_intvl=15
net.ipv4.tcp_keepalive_probes=4
net.ipv4.tcp_max_orphans=256
# increase TCP max buffer size
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
# increase Linux autotuning TCP buffer limits
# min, default, and max number of bytes to use
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.route.flush=1
#
# Decrease the time default value for tcp_fin_timeout connection
net.ipv4.tcp_fin_timeout = 30
# Turn off the inefficient tcp options
net.ipv4.tcp_window_scaling = 0
net.ipv4.tcp_sack = 0
net.ipv4.tcp_timestamps = 0
sysctl -p
/etc/rc.d/init.d/network restart
vi /etc/security/limits.conf
web soft nofile 8192
web hard nofile 65536
/etc/rc.d/init.d/sshd restart
Apache:
insert the follwing line into bin/envvars to fix Apache memory handling on Enterprise Linux:
export LD_ASSUME_KERNEL=2.4.1
Also, I think this might work better:
<IfModule mpm_worker_module>
ServerLimit 64
ThreadLimit 2048
StartServers 12
MaxClients 2048
MinSpareThreads 1
MaxSpareThreads 32
ThreadsPerChild 32
MaxRequestsPerChild 0
</IfModule>
If you are confident you are not losing memory, fine. Otherwise use something like:
MaxRequestsPerChild 1024