55 votos

Para instalar: Apache Trabajador o Prefork? ¿Cuáles son las (des)ventajas de cada uno?

Basado en las descripciones de ambos el Prefork y Trabajador MPM, parece que el prefork tipo es un poco anticuado, pero realmente no puedo encontrar una adecuada comparación de los dos tipos.

Lo que me gustaría saber:

  • ¿Cuáles son las diferencias entre las dos versiones?
  • ¿Cuáles son las (des)ventajas de cada tipo de servidor?
  • Hay pautas básicas sobre qué tipo elegir de acuerdo con las condiciones?
  • Hay grandes diferencias de rendimiento entre los dos?

7voto

adaptr Puntos 14002

La la solución clásica de ejecutar inseguro extensiones mientras servía con números grandes (>100) de conexiones simultáneas para ejecutar PHP en fastCGI (mod_fcgid, un nativo módulo de apache) y proxy dinámico de las solicitudes a que a partir de una instancia de apache que corre el MPM Worker.

Esto permitiría a escala de unos pocos cientos hasta >1000 conexiones simultáneas con una modesta cantidad de memoria (4~8 GB) cuando se sirve una mezcla de contenido estático y dinámico.

Por supuesto, usted también debe investigar front-end de soluciones de almacenamiento en caché como parte de su despliegue global (memcached, barniz).

Alternativamente, la actualización de apache 2.4 y sus nativos evento MPM, que se encarga de la simultaneidad en la mejora de la moda (hilos se disparó tras la conexión, no esperando a ser encuestados.)

6voto

Ryan Sampson Puntos 2898

Como la documentación decir, se debe utilizar el MPM prefork si usted necesita para evitar roscado para la compatibilidad con los no-thread-safe bibliotecas. Normalmente, no trivial módulo de Apache (mod_php - o, más precisamente, la gran cantidad de extensiones y librerías que se vincula-de ser el ejemplo canónico) tiene algún tipo de no-thread-safe de la biblioteca (o no-thread-safe código en él), así que a menos que usted está utilizando una bastante stock instalación de Apache, yo iría a por el MPM prefork.

6voto

aleemb Puntos 131

Ha sido de unos 3 años desde que la pregunta que tengo publicado, pero yo le recomiendo que vaya con MPM worker en lugar de pre-horquilla incluso si el uso de PHP, para obtener el mejor rendimiento.

En cuanto a las diferencias, pre-horquilla sin rosca por lo tanto el servidor horquillas de un proceso para cada solicitud de cliente (pre-horquillas en previsión de nuevas solicitudes para que se bifurcan no come en el tiempo de respuesta). Debido a que las solicitudes de servidor en un proceso independiente, esto por lo general los impuestos de su memoria y de CPU mucho más que. El trabajador traer multi-threading, que es más ligero y tiene una mejor utilización de la memoria.

6voto

Marcin Puntos 1453

Esto es algo muy particular a lo que usted está sirviendo. Si usted está haciendo un montón de estática conexiones, hilos sería más ligero y más rápido. Si usted acaba de tener unos grandes aplicaciones constantemente generado, prefork podría tener un borde debido que es la madurez y la estabilidad. ¿Por qué no acaba de establecer lo que usted necesita, prueba uno, sustituir el módulo MPM, intentarlo de nuevo, a ver cuál se adapta mejor a usted?

1voto

sarath Puntos 17

que necesita en el tipo y clase de tráfico. Y también en primer lugar usted necesita entender la diferencia principal entre el prefork y trabajador. Espero que el siguiente artículo le ayudará a averiguar! http://slashroot.in/how-is-nginx-different-from-apache

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: