<-
Apache > Servidor HTTP > Documentación > Versión 2.5

Módulos de MultiProcesamiento (MPMs)

Idiomas disponibles: de | en | es | fr | ja | ko | tr | zh-cn

Este documento describe que es un Módulo de Multiprocesamiento y como los usa Apache.

top

Introducción

El servidor Apache HTTPD está diseñado para ser un servidor web potente y flexible que pueda funcionar en la más amplia variedad de plataformas y entornos. Las diferentes plataformas y los diferentes entornos, hacen que a menudo sean necesarias diferentes características o funcionalidades, o que una misma característica o funcionalidad sea implementada de diferente manera para obtener una mayor eficiencia. Apache httpd se ha adaptado siempre a una gran variedad de entornos a través de su diseño modular. Este diseño permite a los administradores de sitios web elegir que características van a ser incluidas en el servidor seleccionando que módulos se van a cargar, ya sea al compilar o al ejecutar el servidor.

El servidor Apache HTTP 2.0 extiende este diseño modular hasta las funciones más básicas de un servidor web. El servidor viene con una serie de Módulos de MultiProcesamiento que son responsables de conectar con los puertos de red de la máquina, acceptar las peticiones, y generar los procesos hijo que se encargan de servirlas.

La extensión del diseño modular a este nivel del servidor ofrece dos beneficios importantes:

  • Apache httpd puede soportar de una forma más fácil y eficiente una amplia variedad de sistemas operativos. En concreto, la versión del servidor en Windows es mucho más eficiente, porque el módulo mpm_winnt puede usar funcionalidades nativas de red en lugar de usar la capa POSIX como hace Apache HTTPD 1.3. Este beneficio se extiende también a otros sistemas operativos que implementan sus MPMs especializados.
  • El servidor puede personalizarse mejor para las necesidades de cada sitio web. Por ejemplo, los sitios web que necesitan más que nada escalibildad pueden usar un MPM multihilo como worker o event , mientras que los sitios web que requieran por encima de otras cosas estabilidad o compatibilidad con software antiguo pueden usar prefork .

A nivel de usuario, los MPMs son como cualquier otro módulo de Apache. La diferencia más importante es que solo un MPM puede estar cargado en el servidor en un determinado momento. La lista de MPMs disponibles está en la sección índice de Módulos.

top

MPM por defecto

En la siguiente tabla se muestran los MPMs por defecto para varios sistemas operativos. Estos serán los MPM seleccionados si no se especifica lo contrario al compilar.

BeOS beos
Netware mpm_netware
OS/2 mpmt_os2
Unix prefork
Windows mpm_winnt

Aquí, 'Unix' indicaba sistemas operativos tipo Unix, tales como Linux, BSD, Solares, Mac OS X, etc.

En el caso de Unix, la decisiónd e qué MPM se debe instalar se basa en dos preguntas:

1. ¿El sistema soporta hilos?

2. ¿El sistema soporta thread-safe polling (Especificamente, las funciones kqueue y epoll)?

Si la respuesta a ambas preguntas es 'si', el MPM por defecto es event .

Si la respuesta a #1 es 'si', pero la respues a #2 es 'no', el módulo por defecto será worker .

Si la respuesta a ambas preguntas es 'no', entonces el MPM por defecto será prefork .

En términos prácticos, esto significa que el valor por defecto casi siempre será event , puesto que todos los sistemas operativos modernos soportan estas dos características.

top

Compilando un MPM como módulo estático

Los MPMs pueden ser compilados como módulos estáticos en todas las plataformas. Un solo MPM es elegido en tiempo de compilación y se enlaza al servidor. El servidor debe ser recompilado para cambiar el MPM.

Para anular la elección por defecto de MPM, usar la opción --with-mpm=NOMBRE del script configure . NOMBRE es el nombre del MPM deseado.

Una vez el servidor ha sido compilado, es posible determinar qué MPM fue elegido usando ./httpd -l. Este comando listará cada módulo compilado en el servidor incluyendo el MPM.

top

Compilando un MPM como módulo DSO

En Unix y plataformas similares, MPMs se pueden compilar como módulos DSO y ser cargados dinámicamente en el servidor de la misma forma que otros módulos DSO. Compilar MPMs como módulos DSO permite cambiar de MPM actualizando la directiva LoadModule para el MPM en lugar de tener que recompilar el servidor.

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

Intentar usar LoadModule con más de un MPM dará como un fallo con el siguiente error.

AH00534: httpd: Configuration error: More than one MPM loaded.

Esta características se habilita con la opción --enable-mpms-shared del script configure . Con el parámetro all, se instalaran todos los MPMs posibles en la plataforma. Alternativamente, se puede especificar una lista de MPMs como parámetro.

El MPM por defecto, bien seleccionado automáticamente o especificado con la opción --with-mpm del script configure script, se cargaran en el fichero de configuración del servidor generado. Editar la directiva LoadModule para seleccionar un MPM diferente.

Idiomas disponibles: de | en | es | fr | ja | ko | tr | zh-cn

AltStyle によって変換されたページ (->オリジナル) /