230 votos

¿Cómo puedo seleccionar que Apache MPM utilizar?

Estoy un poco confundido entre los diferentes MPMs ofrecidos por Apache - 'trabajador', 'event', 'prefork", etc.

¿Cuáles son las principales diferencias entre ellos, y cómo puedo decidir cuál será el mejor para un determinado despliegue?

381voto

Shane Madden Puntos 81409

Hay un número de módulos MPM (Multi-Módulos de Procesamiento), pero por lejos el más utilizado (al menos en *nix plataformas) son los tres principales: prefork, workery event. Esencialmente, ellos representan la evolución del servidor web Apache, y las diferentes maneras en que el servidor ha sido construida para manejar las peticiones HTTP en el seno de la computación en las limitaciones del tiempo durante su largo (en los términos y condiciones del software) de la historia.


prefork

mpm_prefork es.. bueno.. es compatible con todo. Gira de una serie de procesos para atender las solicitudes, y el niño los procesos de sólo servir una petición a la vez. Dado que tiene el proceso del servidor sentado allí, listo para la acción, y no tener que lidiar con hilo de cálculo de referencias, es en realidad más rápido que el más moderno de rosca MPMs cuando sólo estás tratando con una única solicitud en un tiempo - pero solicitudes simultáneas sufrir, ya que están hechos para esperar en la cola hasta que un servidor es un proceso gratuito. Además, tratando de escalar en el recuento de prefork procesos secundarios, fácilmente te tome algunos problemas graves de memoria RAM.

Probablemente no es aconsejable el uso de prefork a menos que necesite un módulo que no es seguro para subprocesos.

Uso si: Usted necesita los módulos que se rompen cuando los hilos se utilizan, como la mod_php. Incluso entonces, considere la posibilidad de usar FastCGI y php-fpm.

No utilizar si: los módulos que no se rompa en las operaciones de roscado.

worker

mpm_worker utiliza roscado - que es una gran ayuda para la concurrencia. Trabajador tiradas de algunos procesos secundarios, que a su vez spin off hilos; similar a prefork, algunos de repuesto, hilos se mantienen listo, si es posible, al servicio de las conexiones entrantes. Este enfoque es mucho más amable de la RAM, ya que los hilos no tienen una incidencia directa sobre el uso de la memoria como el número de servidores en prefork. También se ocupa de la concurrencia mucho más fácilmente, ya que las conexiones sólo tiene que esperar para una libre hilo (que generalmente está disponible) en lugar de un servidor de repuesto en prefork.

Uso si: estás en Apache 2.2 o 2.4 y ejecuta principalmente SSL.

No utilizar si: Usted realmente no puede ir mal, a menos que usted necesita prefork para la compatibilidad.

Sin embargo, tenga en cuenta que los peldaños están conectados a las conexiones y no se pide , lo que significa que una conexión keep-alive siempre mantiene ahold de un hilo hasta que sea cerrado (que puede ser un largo tiempo, dependiendo de su configuración). Es por eso que contamos..

event

mpm_event es muy similar a la del trabajador, estructuralmente; apenas se ha movido de 'experimental' a 'estable' en Apache 2.4. La gran diferencia es que utiliza un hilo dedicado a tratar con la que mantuvo vivas las conexiones, y las solicitudes de manos hacia abajo para hilos sólo cuando una solicitud ha sido hecha (que permite a los hilos de conexión copia de seguridad inmediatamente después de que se complete la solicitud). Esto es grande para la concurrencia de los clientes que no necesariamente son todos los activos en un tiempo, pero hacer ocasional de las solicitudes, y cuando los clientes tienen una larga keep-alive tiempo de espera.

La excepción aquí es con las conexiones SSL; en ese caso, se comporta de forma idéntica a los trabajadores (el encolado de una conexión dada a un determinado hilo hasta que se cierra la conexión).

Uso si: estás en Apache 2.4 y como hilos, pero a usted no le gusta tener subprocesos en espera de conexiones inactivas. Todo el mundo le gusta hilos!

No utilizar si: no estás en Apache 2.4, o usted necesita prefork para la compatibilidad.


En el mundo de hoy de slowloris, AJAX, y los navegadores a los que les gusta multiplex 6 conexiones TCP (con keep-alive, por supuesto) a su servidor, la simultaneidad es un factor importante en la toma de su servidor de escala y escala bien. Apache la historia de la ataron en este sentido, y aunque realmente todavía no está a la par con los gustos de nginx o lighttpd en términos de uso de recursos o la escala, es claro que el equipo de desarrollo está trabajando hacia la construcción de un servidor web al que siguen siendo relevantes hoy en día de alta de solicitud de simultaneidad mundo.

3voto

Jeroen Puntos 745

Depende sobre todo de que los módulos de Apache que desea utilizar. Creo trabajador en general es la opción por defecto, pero algunos (la más antigua) módulos requieren que se bifurcan y dependen de prefork.

Si usted no tiene preferencias, te recomiendo ir con el preferido de la dependencia de su sistema operativo de distribución. Ubuntu, por ejemplo, por defecto instalar mpm-worker al instalar Apache2.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: