Tengo una aplicación PHP que utiliza una gran cantidad de bases de datos y puede ejecutarse durante muchas horas procesando y realizando miles de conexiones de red externas.
Se conectarán menos de 3 usuarios a esta aplicación en cualquier momento.
¿Qué apache mpm es más adecuado para esta carga de trabajo, prefork/mod_php o trabajador/mod_fcgid?
Estoy usando Debian Lenny x64, un solo núcleo, 4 GB de RAM.
Respuesta1
Para máquinas más lentas, el modo de trabajador funciona mejor y genera un menor uso y carga de CPU.
Para máquinas potentes que sirven contenido estático, el mpm prefork es aproximadamente un 5% más rápido.
Recomiendo si tienes la oportunidad de hacer algunas pruebas con Apache Benchmark:Punto de referencia de Apache
Además, puedes echar un vistazo a este punto de referencia:Apache prefork versus trabajador
¿Su motor de base de datos está instalado en el mismo servidor?
Respuesta2
Apache tiene dos módulos MPM que se utilizan ampliamente: Worker MPM y Pre-fork MPM. PHP.net recomienda utilizar el MPM previo a la bifurcación, mientras que la mayoría de los expertos en optimización de sitios le recomendarían que utilice el MPM de trabajo con subprocesos. Sorprendentemente, las pruebas de carga mostraron una diferencia de rendimiento relativamente pequeña, y ciertamente no una que lo empujaría hacia una implementación no recomendada en su servidor.
Respuesta3
Worker + PHP a través de FastCGI tienden a funcionar bien; históricamente, muchas personas desaconsejaron el uso de mod_php con cualquier MPM con subprocesos (debido a algunas bibliotecas de terceros que no funcionaban muy bien con eso), el uso de FastCGI básicamente "separa" PHP del servidor web. , evitando ese problema.
Otra ventaja es que ahora el tamaño del proceso/proceso de Apache es más pequeño, por lo que puede usar más subprocesos/procesos para el servidor web (que sirve contenido estático) y tener pocos procesos PHP que realicen partes dinámicas del sitio.