lunes, 9 de marzo de 2015

Apache : calcular tamaño memoria por proceso de apache y optimizar el valor de Maxclients

Para calcular el tamaño que está ocupando en memoria apache y sus procesos podemos usar el siguiente script en bash:

 ps -ylC httpd | awk '{x += $8;y += 1} END  { print "Apache uso de memoria (MB): "x/1024;  print "Tamaño medio del proceso (MB): "x/((y-1)*1024);   print "Procesos apache: "y-1;   }'

Ejemplo de salida
Apache uso de memoria (MB): 1396.54
Tamaño medio del proceso (MB): 16.8257
Procesos apache: 83

Estos valores son útiles para optimizar el parámetro MaxClients en el fichero /etc/httpd/conf.d/mpm_prefork.conf ( Centos 7 ) .

Para calcular el Valor:

MaxClients = (Total RAM en el sistema - RAM reserva para el resto del sistema) /  Tamaño medio del proceso

Por ejemplo si tenemos una máquina con 16 GB, y queremos dedicar al apache el 80% de la memoria (3,2 GB) y el tamaño del proceso es de 17MB.

MaxClients = (16GB - 3.2 GB) * 1024 / 17MB =771,0118
o equivalentemente
MaxClients = ((16×1024) × 0,8) ÷ 17 = 771
SI queremos fijar la cantidad de memoria a un valor fijo (ej: 4GB) se hacen las mismas cuentas
MaxClients = (4×1024) ÷ 17 = 240