—Limitaciones a la concurrencia

Apache tiene diversas opciones de configuración, todas situadas en el apache2.conf, que pueden usarse para ajustar el manejo de peticiones concurrentes. Se permite así dimensionar de forma precisa la carga de trabajo que impone al servidor que lo aloja, limitándola en caso de que sea excesiva para las capacidades del mismo:

  • MaxClients: Máximo número de procesos hijos que pueden crearse para servir peticiones. Debe tenerse en cuenta que establecer un número muy alto puede colapsar la máquina, por lo que debemos ajustarlo cuidadosamente a la memoria disponible y capacidades del servidor.
  • MaxSpareServers: (Sólo MPM prefork) Determina el nº máximo de procesos hijo en espera.— Un proceso en espera es aquel que no está atendiendo ninguna petición.— Si hay más de MaxSpareServers procesos hijo en espera, entonces el proceso padre elimina el exceso de procesos, para liberar recursos y optimizar el uso de los mismos.
  • MaxRequestsPerChild: Especifica el nº máximo de peticiones que un proceso hijo atenderá durante su existencia.— Pasado este número, el proceso hijo se eliminará. Establecer el valor 0 significa que no hay límite de peticiones.
  • ThreadsPerChild: El nº de hilos creados por cada proceso hijo. Este es un parámetro que no se usa en algunos MPM por no tener sentido, como por ejemplo el MPM prefork (donde hay 1 hilo por hijo siempre). El proceso hijo crea el nº de hilos indicado al inicio del mismo y no vuelve a crear más. Es importante hacer algunas consideraciones en función del MPM usado:
    • Si se usa un MPM como mpm_winnt, en el que solo hay un proceso hijo, este nº debería ser lo suficientemente grande como para atender toda la carga del servidor.
    • Si se usa un módulo MPM como worker, en el que hay múltiples procesos hijo, el nº total de hilos debería ser lo suficientemente grande como para atender la carga en circunstancias normales del servidor.
  • MaxSpareThreads: Nº máximo de hilos en espera. Los diferentes MPMs tienen distintos comportamientos respecto a esta directiva
  • —Podemos encontrar más datos acerca del comportamiento de estas directivas sobre los diversos MPM en:
  • žOpción Keep-Alive:— Permite conexiones persistentes, es decir, múltiples peticiones que se enviarán a través de la misma conexión TCP. Con esto se consiguen mejoras de rendimiento de hasta el 50%, por lo que es interesante mantener activa esta opción. No obstante, para un mejor control de esta opción podemos considerar ajustar el valor de dos directivas:
    • MaxKeepAliveRequests (100 por defecto): Máximo nº de peticiones por conexión. 0 significa ilimitadas. Valores mayores suelen dar mejor rendimiento, pero puede sobrecargar el servidor.
    • KeepAliveTimeout: Segundos de espera entre peticiones subsiguientes antes de cerrar la conexión.
    • Los valores adecuados pueden determinarse analizando los logs del servidor. No obstante, ante la duda, es mejor dejar los valores por defecto.
Last modified: Saturday, 31 July 2010, 1:15 AM