2009-09-10 21 views
18

Tengo una idea básica sobre la ejecución de PHP en diferentes configuraciones como mod_php, cgi, FastCGI, etc.Apache mod_php OR FastCGI? ¿Cuál es bueno para Wordpress?

En mis hallazgos y pruebas encontré que FastCGI es un poco mejor. Me gusta más el soporte de FastCGI para SuEXEC. Espera, no quiero entrar en el negocio de benchmarking aquí de nuevo. Si navega por la web, encontrará personas que demuestran que una de las formas es más rápida que otra en términos de cantidad de solicitudes manejadas por segundo. Bueno, es una buena métrica, pero estoy interesado en diferentes factores y estas son mis preguntas ...

  1. ¿Qué método de ejecución de PHP consume menos memoria?
  2. También qué método consume memoria casi constante. Veo con mod_php el uso de memoria de mi servidor fluctuando entre 300MB y 800MB, cada pocos segundos.
  3. Pero con FastCGI, la primera respuesta del servidor llega muy tarde. Veo que con FastCGI hay un retraso inicial por solicitud de página web. Una vez que llega la primera respuesta del servidor, otros elementos como imágenes, css, js se cargan bastante más rápido.
  4. ¿Está bien ejecutar la mezcla de ambos? Tengo 5 sitios en el servidor dedicado. ¿Está bien si ejecuto unos pocos con mod_php y descanso con FastCGI?
  5. Estoy seguro de que mi servidor se cae principalmente debido al uso incorrecto de la memoria por mod_php. Revisé todas las secuencias de comandos. ¿Hay alguna manera de asegurarse de que el consumo de memoria en el servidor permanezca casi constante?
  6. ¿La complejidad de .htaccess afecta el uso de memoria significativamente? En caso afirmativo, ¿puede ser una razón única para hacer que el servidor se quede sin memoria?
  7. ¿La configuración de prefork/worker de apache MPM afecta el consumo de memoria? ¿Afectan mod_php y modo FastCGI por igual?
  8. Cuando ejecuto el comando "superior", veo que apache (httpd) consume memoria de alrededor de 40MB. Hay muchas instancias de ejecución de httpd. Además de eso, FastCGI bifurca algunos procesos de tamaño similar. ¿Cuál es el tamaño de memoria normal para el proceso de httpd?
  9. Como estoy ejecutando Wordpress en todos nuestros sitios, ¿cuál será la mejor manera en ese contexto?
  10. ¿FastCGI/SuExec funciona bien con APC? ¿Necesito reconfigurar APC para trabajar con SuEXEC y FastCGI?

Tenga en cuenta que estoy menos interesado en sobrevivir contra DIGG o picos de tráfico. Quiero una forma que pueda hacer que el servidor sea estable y predecible.

Lo siento si estoy confundido pero estoy realmente en el caos. Tengo 512 MB de RAM física, 400 MB de intercambio y mi servidor se está quedando sin memoria como loco. El requisito de memoria promedio es de alrededor de 350 MB, solo los picos de uso de la memoria hacen que la memoria no esté disponible durante unos segundos y si se reciben pocos accesos extra en esa segunda ventana, Apache se cuelga mientras que mysql y todos los demás tipos siguen funcionando bien.

Por favor, ayúdenme chicos. No voy a comprar más RAM o hardware. Estoy absolutamente seguro de que el problema está en mi configuración. Lo siento si sueno arrogante o ignorante.

+0

Como parece realmente preocupado por el uso de la memoria, ¿ha buscado utilizar un servidor que no sea Apache (nginx/lighttpd)? – jimyi

+0

@Jimyi - Estoy preocupado por la memoria, pero no estoy seguro si Wordpress y sus toneladas de complementos funcionarán sin problemas con otros servidores. Necesito la reescritura mod de Apache todo el tiempo. También quién sabe qué mod de Apache necesitaré en el futuro, ya que apache tiene muchas. – rahul286

Respuesta

19

¿Qué método de ejecución de PHP consume menos memoria?

Supongo que por solicitud procesada por PHP son más o menos lo mismo. Pero si tiene mod_php cargado en Apache que sirve imágenes también, entonces supongo que su espacio de memoria será mayor debido a que sirve archivos estáticos.

También qué método consume memoria casi constante. Veo con mod_php el uso de memoria de mi servidor fluctuando entre 300MB y 800MB, cada pocos segundos.

Puede hacer las dos bastante constantes. Si configura cuidadosamente MaxClients, MinSpareServers y MaxSpareServers, podrá saber cuántos procesos se están ejecutando. Si también configura memory_limit dentro de su configuración de PHP, puede calcular cuánta memoria necesita. También puede hacer lo mismo con fcgi, ya que puede decidir cuántos procesos se están ejecutando.

Pero con FastCGI, la primera respuesta del servidor llega muy tarde. Veo que con FastCGI hay un retraso inicial por solicitud de página web. Una vez que llega la primera respuesta del servidor, otros elementos como imágenes, css, js se cargan bastante más rápido.

Esto no tiene sentido. No estoy seguro de por qué sucede en tu caso.

¿Está bien ejecutar la mezcla de ambos? Tengo 5 sitios en el servidor dedicado. ¿Está bien si ejecuto unos pocos con mod_php y descanso con FastCGI?

supongo, pero los dos estarán en una pesadilla para mantener y probablemente será más difícil de configurar para ahorrar memoria . Todo lo contrario, creo.

Estoy seguro de que mi servidor se cae principalmente debido al uso incorrecto de la memoria por mod_php. Revisé todas las secuencias de comandos. ¿Hay alguna manera de asegurarse de que el consumo de memoria en el servidor permanezca casi constante?

Configure la memoria y los procesos como se describe anteriormente, y siga supervisando.

¿La complejidad de .htaccess afecta el uso de memoria significativamente? En caso afirmativo, ¿puede ser una razón única para hacer que el servidor se quede sin memoria?

No lo creo. por .htaccess por directorio puede ralentizar las cosas, pero a menos que exista algún error grave en Apache, no debería causar un consumo masivo de memoria.

¿La configuración de prefork/worker de apache MPM afecta el consumo de memoria? ¿Afectan mod_php y modo FastCGI por igual?

Podría, pero le recomiendo que se mantenga alejado del trabajador, ya que PHP no es seguro para subprocesos.

Cuando ejecuto el comando "superior", veo que apache (httpd) consume memoria de alrededor de 40MB. Hay muchas instancias de ejecución de httpd. Además de eso, FastCGI bifurca algunos procesos de tamaño similar. ¿Cuál es el tamaño de memoria normal para el proceso de httpd?

30MB es el min.El límite superior depende de su aplicación (He visto casos en los que era ~ 1GB)

Como estoy ejecutando Wordpress en todos nuestros sitios, ¿cuál será la mejor manera en ese contexto?

Probablemente es una cuestión de gusto. Recientemente me alejé de apache hacia nginx + fastcgi. toma un poco de tiempo acostumbrarse, pero funciona bien. No hay problemas de ningún tipo con wordpress (incluso no con supercache, que es bastante complicado en términos de servidor web).

¿FastCGI/SuExec funciona bien con APC? ¿Necesito reconfigurar APC para trabajar con SuEXEC y FastCGI?

No estoy usando suExec, pero fastcgi funciona bien con APC. No es necesario configurar nada.

+2

@yhager Gracias por tu respuesta detallada. También moví nuestra red de blogs de alto tráfico a nginx + fastcgi + wp-supercache. ¿Hay alguna forma de agregar APC a nginx + fastcgi + wp-supercache? ¿Mejorará el rendimiento aún más? – rahul286

+2

solo instale APC y reinicie PHP. Y, SÍ, mejorará un poco el rendimiento – yhager

3

Intentó cambiar a mod_php, muchas afirmaciones sobre su velocidad. No se dio cuenta de mod_php se quema a través de la memoria extra al servir archivos estáticos.(No me importó demasiado el problema de seguridad con los archivos propietarios de la raíz).

Sin una configuración de CDN, fastcgi es su elección para servir aplicaciones de PHP. Sin él, cambiar de fcgi a mod_php redujo el tiempo de generación de mi página, de 3895ms a 6264ms (páginas de administración en alojamiento compartido).

+1

, pero solo en circunstancias excepcionales, mod_php tendrá un mejor rendimiento que fastcgi/fcgi – rahul286

+1

En mi circunstancia, fastcgi fue casi dos veces más rápido (1.6x). Por lo que pude decir es por mis archivos estáticos. Avíseme si esa es una suposición incorrecta. – doublejosh

+3

fastcgi es más rápido debido a las diferencias arquitectónicas. Apache + mod_php carga el servidor web + php-parser para todos los archivos. Cuando mantienes separado Apace y fastcgi, cargas fastcgi solo para archivos PHP y para el resto de los archivos ejecutas Apache sin mod_php (mod_php es un módulo muy grande). Además de esto, fastcgi tiene muchas otras ventajas también – rahul286

Cuestiones relacionadas