Dimensionamiento (Tunning) Apache2 prefork (+PHP5) Maxclients

La presente tiene como finalidad presentar un ejemplo práctico de como calcular el valor de Maxclients en Apache2 Prefork con PHP5.

Aplicaciones o configuraciones complementarias:

Documentación oficial de Apache2

La directiva MaxClients establece el límite en el número de solicitudes (peticiones) simultáneas que se servirán. Cualquier intento de conexión sobre el valor de MaxClients, se colocará en cola, hasta un número basado en la directiva ListenBacklog. Una vez que un proceso hijo se libera al final de una solicitud diferente, entonces será atendida la conexión.

Para los servidores prefork(que es nuestro caso de ejemplo), MaxClients se traduce en el número máximo de procesos secundarios que serán lanzadas para servir peticiones. El valor por defecto es 256; para aumentarlo se hace necesario incrementar ServerLimit.

Análisis servidor básico Debian + Apache2 + PHP5

Para efectuar los calculos de la directiva maxclients, se deben conocer los siguientes parámetros:
El el consumo de memoria RAM de Apache2 y PHP5, el consumo de memoria RAM del aplicativo (página web), la cantidad de memoria RAM consumido por el sistema operativo y la cantidad de memoria RAM a reservar

1. Consumo memoria RAM Apache2 + PHP5
2. Consumo memoria RAM aplicativo(página web)
3. Consumo memoria RAM sistema operativo
4. Cantidad memoria RAM a Reservar

1. Consumo memoria RAM por proceso de Apache2+PHP5:

Se debe ejecutar Apache2 + PHP5 desactivando el site del aplicativo (a2dissite), con ello se procede a medir el consumo de memoria RAM

1.1. Ejecutar comando ps:

operador@servidor:~$ ps -C apache2 -o rss
24692 8148 8148 8148 8148 8148

1.2. Sumar y dividir entre 1024, el resultado estará expresado en MB, en nuestro caso el resultado de la suma es: 65432 dividido entre 1024, resultado1 ~= 64MB

2. Consumo memoria RAM Aplicativo(página web):

Se debe cargar el site del aplicativo y ejecutar una solicitud en navegador web, se procede a medir el consumo de memoria RAM:

2.1. Ejecutar comando ps:

operador@servidor:~$ ps -C apache2 -o rss
24720 9732 8148 8148 8148 8148 8148

2.2. Sumar y dividir entre 1024, el resultado estará expresado en MB, en nuestro caso, resultado de la suma es: 75192 dividido entre 1024, resultado2 ~= 74MB

2.3. Peso página(aplicativo) = resultado1(apache2+php5) – resultado2(apache2+php5+aplicativo)

Peso página(aplicativo) = 64mb – 74mb ~= 10mb

3. Consumo memoria RAM Sistema Operativo:

En nuestro caso el sistema operativo consume 132mb (instalación base Debian sin entorno gráfico)

4. Cantidad Memoria Reservada:

En nuestro caso, por política se reserva el 15% de la memoria RAM

Cálculo para el MaxClients en Apache2

Cantidad Memoria RAM del servidor (8GB) = 8192mb

Cantidad de Memoria RAM consumida por Apache2 + php5 = 64mb
Cantidad de Memoria RAM consumida por aplicativo = 10mb
Cantidad de Memoria RAM consumida por el sistema operativo = 132mb
Cantidad de Memoria RAM reservada = 1229mb

memoria RAM libre(ML) = memoria RAM total(MT) – memoria RAM utilizada(MU)
memoria RAM libre (ML) = 8192mb – (64mb+132mb)
memoria RAM Libre (ML) = 7996mb

memoria RAM disponible (MD) = memoria RAM libre (ML) – memoria RAM Reservada (R)
memoria RAM disponible (MD) = 7996 – 1229mb
memoria RAM disponible (MD) = 6767mb

MAxClients = Memoria RAM Disponible / Memoria RAM consumida por aplicativo
MAxClients = 6767 / 10mb ~= 676 conexiones simultáneas

MaxClients ~ = 676 Número máximo de peticiones servidas simultáneamente

Nota Importante: Cuando el tráfico del site supere las 676 solicitudes simultáneas, las siguiente peteiciones serán colocadas en cola, con ello se garantiza que el consumo de memoria no afectará la ejecución del sistema operativo.

Notas “Upgrading to 2.4 from 2.2”: MaxClients ha sido renombrado a MaxRequestWorkers, que describe con mayor precisión lo que hace. Para MPMs asíncronos, como evento, el número máximo de clientes no es equivalente al número de subprocesos de trabajo. El nombre antiguo aún es compatible.

Efectuar los cambios:
1. Editar archivo prefork

root@server:~# vim /etc/apache2/mods-enabled/mpm_prefork.conf

Efectuar los siguientes cambios:

        StartServers              5
        MinSpareServers           5
        MaxSpareServers          10
        MaxRequestWorkers        676
        MaxConnectionsPerChild   0
 

2. Reiniciar el servicio apache

root@server:~# /etc/init.d/apache2 restart

Enlace:
how-to-tune-apache-on-ubuntu-14-04-server
Upgrading to 2.4 from 2.2
Apache MPM Common Directives
kill off apache processes when memory usage hits 90
tuning de apache con cabeza
Optimizacion de Apache para bajo consumo de memoria
tuning your apache server
Tuning apache2 prefork maxclients serverlimit

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s