2008-12-26 9 views
5

Estoy ejecutando una aplicación Django usando FastCGI y lighttpd.¿Qué valores usar para FastCGI maxrequests, maxspare, minspare, maxchildren?

¿Alguien puede explicarme qué debo considerar al decidir qué valor usar para maxrequests, maxspare, minspare, maxchildren?

Estas opciones no están muy bien documentadas, pero parecen bastante importantes.

No me diga lo que hacen; Quiero entender qué implicaciones tienen y cómo debo decidir qué valores usar.

Gracias.

Respuesta

13

Vamos a empezar con la definición

 
    maxrequests: How many requests does a child server before being killed 
       and a new one forked 
    maxspare : Maximum number of spare processes to keep running 
    minspare : Minimum number of spare processes to prefork 
    maxchildren: Hard limit number of processes in prefork mode 

Esto significa que usted tendrá en la mayoría de maxchildren procesos que se ejecutan en un momento dado en su servidor web, cada candidato a maxrequests peticiones. En el inicio del servidor obtendrá minspare procesos, que seguirán creciendo hasta maxspare (o maxchildren) si se reciben más solicitudes.

Así, minspare te permite decir cuántas peticiones concurrentes son sus expectativas en un mínimo (importante para evitar la creación de procesos si se comienza con uno, es bueno comenzar a, por ejemplo, 10), y maxspare permite usted dice a cuántas solicitudes simultáneas atenderá su servidor como máximo (sin comprometer el tiempo de respuesta esperado, etc.). Necesita una prueba de esfuerzo para validar. Y maxrequests está hablando de la vida útil de cada niño, en caso de que no puedan ejecutarse para siempre debido a cualquier tipo de restricción.

+0

Buena explicación. ¿Puedes decir algo más sobre maxrequests? Esa es mi mayor preocupación. ¿Por qué querrías que un proceso infantil muriera después de un cierto número de solicitudes? Para protegerse de fugas de memoria eventuales? – ibz

+0

No puedo hablar por todos, aunque con Django y fastcgi hemos visto muchos problemas de memoria con los procesos fastcgi de larga duración. Establecer un valor razonable para 'maxrequests' nos evita tener que eliminar manualmente los procesos grandes, ya que no están disponibles el tiempo suficiente para que la pérdida de memoria cause mucho daño. –

+0

¿Cuál es la diferencia entre maxchildren y maxspare? Me parecen redundantes. –

-1

No olvide coordinar las configuraciones de fcgi con la configuración de su trabajador de apache. Por lo general, mantengo a más trabajadores de apache alrededor que los trabajadores de fcgi ... son más livianos y esperarán a que un trabajador de fcgi disponible libere para procesar la solicitud si la concurrencia alcanza más que mi maxspare.

+1

Lighttpd no tiene trabajadores de Apache. – gw0

Cuestiones relacionadas