Explicación de los MPM de Apache

El servidor web Apache es el más popular del mundo. Esto se debe en parte a su diseño modular. Apache 2 introdujo los módulos de multiprocesamiento, o MPMs. Los MPMs cambian la funcionalidad básica del servidor web. Lo hacen modificando la forma en que Apache escucha la red, acepta y gestiona las peticiones. Mucha de esta funcionalidad es bastante técnica y está fuera del ámbito de este artículo. Este artículo explicará brevemente qué son los distintos MPM y cómo funcionan. Para una información más detallada sobre los distintos MPMs, por favor visite la Documentación de Apache.

Introducción

Todas las versiones de Apache 2.0 y superiores ejecutan alguna forma de MPM, y hay una variedad de MPMs para los distintos sistemas operativos. Este artículo sólo se centrará en los disponibles para el sistema operativo Linux. En primer lugar, querrá determinar qué versión de Apache y qué MPM está ejecutando actualmente su servidor. Puede determinar esto ejecutando el siguiente comando en la línea de comandos.

httpd -V | grep -i 'version\|mpm'

La ejecución de ese comando le dará una salida como la siguiente:

# httpd -V | grep -i 'version\|mpm'
Server version: Apache/2.4.16 (Unix)
Server MPM: event

En este caso, el servidor está ejecutando Apache 2.4 y utilizando el MPM de eventos. Esta salida puede ser diferente dependiendo de la versión de Apache y el MPM que su servidor esté ejecutando actualmente.

Cambiar su MPM en un servidor cPanel es fácil. Simplemente ejecute el script EasyApache y seleccione el MPM que desee de los disponibles. La lista presente será diferente dependiendo de si está ejecutando Apache 2.0, Apache 2.2 o Apache 2.4. En las versiones de Apache inferiores a la 2.4, sólo Prefork y Worker se consideran estables. El MPM de eventos se considera experimental en Apache 2.2 y sólo debe usarse con Apache 2.4 o posterior.

Si no se siente cómodo ejecutando el EasyApache por sí mismo, póngase en contacto con Heroic Support® y estaremos encantados de ayudarle.

Prefork

Con el módulo Prefork instalado, Apache es un servidor web sin hilos y con prefork. Esto significa que cada proceso hijo de Apache contiene un solo hilo y maneja una petición a la vez. Por ello, consume más recursos que los MPMs con hilos: Worker y Event.

Prefork es el MPM por defecto, así que si no se selecciona ningún MPM en EasyApache, se seleccionará Prefork. Sigue siendo la mejor opción si Apache tiene que usar librerías no seguras para los hilos, como mod_php (DSO), y es ideal si el aislamiento de los procesos es importante.

Worker

El MPM Worker convierte a Apache en un servidor web multiproceso y multihilo. A diferencia de Prefork, cada proceso hijo de Worker puede tener varios hilos. Así, Worker puede manejar más peticiones con menos recursos que Prefork. Worker se recomienda generalmente para servidores con mucho tráfico que ejecuten versiones de Apache anteriores a la 2.4. Sin embargo, Worker es incompatible con las bibliotecas que no son seguras para los hilos. Si necesita ejecutar algo que no es seguro para los hilos, tendrá que seguir con Prefork.

Event

Cada proceso bajo Event también puede contener múltiples hilos pero, a diferencia de Worker, cada uno es capaz de realizar más de una tarea. Apache tiene los requisitos de recursos más bajos cuando se usa con el MPM Event.

Event, sin embargo, está soportado solamente en servidores que ejecutan Apache 2.4. En Apache 2.2, Event se considera experimental y es incompatible con algunos módulos de versiones anteriores de Apache. Sin embargo, en servidores Apache 2.2 con mucho tráfico en los que Apache ha tenido problemas con la memoria, la actualización de Apache para aprovechar el MPM Event puede dar resultados significativos.

Los otros MPMs

Hay otros MPMs experimentales como Threadpool, Perchild y Leader. Liquid Web recomienda no ejecutar estos MPMs. Dado que son experimentales, no hay garantías de que funcionen como se espera y no podemos darles soporte ni garantizar que podamos arreglarlos.

La adición de los módulos multiproceso a Apache ha aumentado su potencia y flexibilidad. Los MPMs permiten a los usuarios cambiar el comportamiento del núcleo. Esto aumenta lo que un usuario puede hacer con Apache sin tener que instalar software adicional. Si tiene alguna pregunta sobre esto o cualquier otra cosa, por favor llame a Heroic Support®.