3 minute read
9.3.3. Mejoras en la configuración
Nota
El uso de disco puede venir tanto por acceso a datos por parte de programas como por uso de swap. En el segundo caso, la mejor... En este resultado podemos ver la cantidad de transacciones de acceso a disco que se han producido, el número de bloques (sectores) leídos y escritos y el total de bloques durante el tiempo de medida.
Advertisement
Valores muy altos indicarían un uso elevado del disco. Debemos entonces asegurarnos de que el sistema dispone de discos rápidos, con el menor tiempo de acceso posible, la mayor velocidad de transferencia disponible y de suficiente memoria para que pueda realizar cache de disco de forma eficiente o para evitar un uso excesivo de swap.
9.3.3. Mejoras en la configuración
Hay algunas mejoras que podemos conseguir mediante ajustes a la configuración del servidor web. Diferentes versiones de Apache incorporan dichos ajustes por defecto, pero aún así deberemos asegurar los valores que esté usando el servidor web, ya que un cambio de éstos puede tener efectos drásticos en el rendimiento del sistema.
Consultas al DNS
Uno de los puntos que suele representar un cuello de botella al procesar peticiones es el hecho de que, en determinadas circunstancias, Apache envía consultas al DNS por cada acceso. Por defecto, dicho comportamiento está inhabilitado desde la versión 2.0. No obstante, existe un caso en el que aún se deben realizar consultas al DNS por cada petición recibida: se trata de cuando usamos directivas de control de acceso, como Allow. En este caso, es recomendable, siempre que sea posible, usar direcciones IP en lugar de nombres.
Enlaces simbólicos y Overrides
Si usamos las opciones FollowSymLinks o SymLinksIfOwnerMatch, Apache deberá comprobar para cada petición si ésta se trata de un enlace, así como si alguno de los directorios padre en la jerarquía de directorios es un enlace simbólico. Ello supone una penalización importante de tiempo por cada acceso. Por eso deberíamos desactivar dichas opciones siempre que nos sea posible, o en caso de requerirlas en algún espacio de disco concreto,
limitar su ámbito mediante las directivas de configuración de Apache (Directory, etc.).
Igualmente si usamos directivas de tipo AllowOverride , esto significará que por cada acceso a un fichero, Apache buscará un fichero .htaccess en la jerarquía de directorios que preceda a dicho fichero. Debemos, al igual que en el caso anterior, limitar el ámbito de aplicación de dicha directiva a lo estrictamente necesario.
Mapeo de memoria y sendfile
Debemos, siempre que nuestra plataforma lo permita, asegurarnos que Apache utiliza, para acceder al contenido de un fichero, las capacidades del sistema operativo para mapeo de memoria (mmap). Por norma general, dicho uso significará un aumento de rendimiento importante. Debemos, eso sí, consultar la documentación de Apache para nuestra plataforma, pues existen algunos sistemas operativos en los que el uso de mmap supone una pérdida de rendimiento. También debemos considerar que los ficheros accesibles a través de unidades compartidas de red (NFS por ejemplo), no deben ser mapeados a memoria.
Otra capacidad del sistema operativo que supone un incremento sustancial del rendimiento de Apache es el uso de la llamada de sistema sendfile, que es una función que proporcionan algunos sistemas operativos, la cual se caracteriza por delegar en el núcleo del sistema operativo la tarea de enviar un fichero a través de la red. En caso de disponer de dicha directiva, conviene asegurarse de que Apache, en tiempo de compilación, la utiliza. Debemos, eso sí, tener las mismas precauciones que con mmap, es decir, asegurarnos de que nuestra plataforma está soportada y de que no se trata de ficheros accesibles a través de unidades de disco de red.
Creación de procesos y hebras
Otro de los puntos donde podemos controlar el rendimiento de Apache es en la creación e instanciación de procesos. Al arrancar, Apache crea una serie de procesos que atenderán las peticiones. Cuando un proceso ha atendido un número determinado de peticio-
nes, se finaliza y otro se arranca en su lugar. Podemos ajustar dicho comportamiento mediante:
• MinSpareServers: número de procesos servidores mínimo que debemos tener en ejecución.
• MaxSpareServers: número de procesos servidores máximo sin atender ninguna petición que podremos tener en ejecución.
• StartServers: número de procesos servidores que podemos arrancar.
• MaxRequestsPerChild: peticiones máximas que podrá atender un proceso antes de ser reciclado.
Otro aspecto que podemos usar para controlar el funcionamiento de Apache es el del gestor de procesamiento (MPM). Por defecto, Apache funciona con un gestor de procesamiento (MPM) basado en procesos de sistema, llamado prefork, pero podemos cambiar éste por uno llamado worker, que además, para cada proceso de sistema lance una serie de hebras (threads). Este último es una buena elección en aquellos sistemas con un nivel de carga elevado.