Ajuste del rendimiento de Apache: Módulos MPM

  1. Ajuste del rendimiento de Apache: Memoria Swap
  2. Ajuste del rendimiento de Apache: Módulos MPM
  3. Ajuste del rendimiento de Apache: Directivas MPM
  4. Ajuste del rendimiento de Apache: Configuración de directivas MPM
  5. Cómo habilitar el registro por canalización en Apache

Tiempo de lectura: 3 minutos

La piedra angular para entender el rendimiento del servidor Apache son, con diferencia, los módulos de multiprocesamiento (MPM). Estos módulos determinan la base de cómo Apache aborda el multiprocesamiento. Multiprocesamiento significa ejecutar múltiples operaciones simultáneamente en un sistema con múltiples unidades de procesamiento central (núcleos de CPU).

Hay muchos MPMs para elegir; sin embargo, este artículo se centra en los módulos más comúnmente utilizados que se encuentran en los servidores VPS basados en Liquid Web Linux. Estos módulos son:

  • MPM Prefork
  • MPM Worker
  • MPM Event
  • Otros MPMs
  • ¿Qué MPM es el mejor?

MPM Prefork

El MPM autorregulado Prefork deriva su nombre de cómo se bifurca o se copia a sí mismo en nuevos procesos idénticos de forma preventiva para esperar las peticiones entrantes. El MPM Prefork es un enfoque de multiprocesamiento no basado en procesos, que ejecuta Apache en un único proceso de servidor principal. Este proceso padre es el responsable de gestionar los servidores hijos adicionales que componen su grupo de servidores. Cuando se utiliza MPM Prefork, cada servidor hijo gestiona una única petición. Este enfoque proporciona un completo aislamiento de otras peticiones tratadas en el servidor. MPM Prefork se utiliza normalmente por compatibilidad cuando se requieren librerías/software que no son de hilo, como mod_php (DSO). Desde el punto de vista de la optimización, MPM Prefork puede ser muy deficiente en comparación con las soluciones multihilo, requiriendo muchos más recursos para alcanzar niveles de tráfico similares a los de un MPM con hilos. Es un recurso intensivo debido a su necesidad de generar copias completas de Apache para cada petición.

Nota:
Evite usar MPM Prefork siempre que sea posible. Su incapacidad para escalar bien con el aumento de tráfico superará rápidamente el hardware disponible en la mayoría de las configuraciones del sistema.

MPM Worker

Un servidor web híbrido prefork, multihilo y multiproceso. De la misma manera que MPM Prefork, MPM Worker utiliza el mismo enfoque con un único proceso principal que gobierna todos los hijos dentro de su grupo de servidores. Sin embargo, a diferencia de MPM Prefork, estos hijos son procesos multihilo que pueden manejar docenas de hilos (peticiones) simultáneamente. MPM Worker ha sentado las bases para el multiprocesamiento multihilo en los servidores Apache, que se estabilizó en Apache 2.2. La configuración de hilos permite a Apache dar servicio a cientos de peticiones con facilidad mientras mantiene sólo una docena de procesos hijos en memoria. El MPM Worker es una solución de alta capacidad y bajos recursos para el servicio web.

Nota
La directiva KeepAliveTimeOut define actualmente la cantidad de tiempo que Apache esperará las peticiones. Cuando utilice KeepAlive con MPM Worker utilice el menor KeepAliveTimeout posible (preferiblemente 1 segundo).

MPM Event

Basado en el código fuente de MPM Worker, MPM Event comparte directivas de configuración con MPM Worker. Funciona de forma casi idéntica a MPM Worker, excepto cuando se trata de manejar las peticiones KeepAlive. MPM Event utiliza un hilo de escucha dedicado en cada proceso hijo. Este hilo de escucha es responsable de dirigir las peticiones entrantes a un hilo de trabajo disponible. El hilo de escucha resuelve el problema encontrado por MPM Worker que bloquea hilos enteros en espera del KeepAliveTimeout. El método Listener de MPM Event asegura que los hilos de trabajo no se queden «atascados» esperando a que expire el KeepAliveTimeout. Este método mantiene la máxima cantidad de hilos de trabajo manejando tantas peticiones como sea posible.

Información sobre el límite del servidor

Consejo:
El evento MPM es estable en Apache 2.4, las versiones anteriores pueden usar MPM Worker como alternativa.

Otros MPMs

Hay un surtido de MPMs adicionales disponibles. Suelen formar parte de la integración de Apache en otros sistemas operativos que no sean los basados en Unix. Estos tienen MPMs específicos que son requisitos o utilizan Apache en sus respectivos tipos de sistemas. Estos tipos de MPMs están fuera del ámbito de este artículo. Puede encontrar más información sobre MPM específicos en la sección MPM Defaults de la documentación oficial de Apache.

Nota:
Recomendamos mantenerse alejado de los MPM experimentales e inestables. La naturaleza poco fiable de estos tipos de software los hace insoportables.

¿Qué MPM es el mejor?

Al considerar la optimización, es esencial entender que no existe una configuración de Apache que sirva para todos. Elegir correctamente un MPM requiere el análisis de muchas variables en movimiento como el tráfico, el código del sitio, el tipo de servidor, el PHP Handler y el hardware disponible. Cada servidor es único, lo que hace que el mejor MPM sea una elección totalmente subjetiva.

Si el código de su aplicación no soporta multihilo, entonces su elección será inevitablemente MPM Prefork por pura compatibilidad. MPM Prefork incluye módulos de software como mod_php (DSO). MPM Worker sin KeepAlive funciona muy bien si su aplicación es un sistema de API de carga equilibrada de alto rendimiento. La escalabilidad y flexibilidad de MPM Event es una sólida elección para alojar múltiples sitios pequeños y medianos en una configuración de alojamiento compartido.

La mayoría de las configuraciones de servidores simples funcionan bien bajo la configuración predeterminada de MPM Event, lo que la convierte en un punto de partida ideal para el ajuste de optimización. Una vez elegido, un MPM puede pasar a las directivas de configuración para revisar qué ajustes pertenecen al rendimiento y la optimización del servidor. O consulte nuestro artículo anterior de esta serie, Ajuste del rendimiento de Apache: Swap Memory.

Navegación en la serie << Artículo anteriorSiguiente >>

Deja un comentario