systemadmin.es > LAMP y web > Que esta abriendo el apache?

Que esta abriendo el apache?

En los frontales web que usan NFS para compartir el contenido se suelen implementar caches de contenido sin tener en cuenta realmente que se esta abriendo. Vamos a ver con strace realmente que esta haciendo apache.

Primero de todo vamos a generar un fichero con todos los opens de los processos httpd:

# strace -fF -s 128 -e open $(pgrep httpd | sed 's/^/-p /') 2>&1 > /tmp/opens

Lo debemos dejar un rato ejecutándose para que sea representativo para luego matarlo con control+C

$ cat /tmp/opens | grep datos | awk '{ print $3 }' | cut -d '"' -f 2 | awk -F . '{ print $NF }' | grep -v  sess | grep -v cache | sort | uniq -c | sort -n
(...)
     72 png
     74 css
     90 js
     95 html
    121 jpg
    528 gif
    814 inc
   4269 htaccess
   7866 php

A primera vista lo que vemos es que se abre mucho htaccess, por lo que si analizamos lo que hace el apache vemos cosas como estas:

[pid 27147] open("/var/www/proyecto.com/htdocs/multi/.htaccess", O_RDONLY <unfinished ...>
[pid 27147] <... open resumed> )        = -1 ENOENT (No such file or directory)
[pid 27147] open("/var/www/proyecto.com/htdocs/multi/projects/.htaccess", O_RDONLY <unfinished ...>
[pid 27147] <... open resumed> )        = -1 ENOENT (No such file or directory)
[pid 27147] open("/var/www/proyecto.com/htdocs/multi/projects/models/.htaccess", O_RDONLY <unfinished ...>
[pid 27147] <... open resumed> )        = -1 ENOENT (No such file or directory)
[pid 27147] open("/var/www/proyecto.com/htdocs/multi/projects/models/logos/.htaccess", O_RDONLY <unfinished ...>
[pid 27147] <... open resumed> )        = -1 ENOENT (No such file or directory)
[pid 27147] open("/var/www/proyecto.com/htdocs/multi/projects/models/logos/hype.gif/.htaccess", O_RDONLY <unfinished ...>
[pid 27147] <... open resumed> )        = -1 ENOTDIR (Not a directory)

Este comportamiento se debe a una configuración similar a:

<Directory /var/www/proyecto.com/htdocs>
     AllowOverride All
</Directory>

Si evaluamos cuantos errores de ficheros no encontrados vemos lo siguiente:

$ cat /tmp/opens | grep "No such file or directory" -c
6301

No todos estos errores se producen por el htaccess, sino que en este caso son debidos a una cache de aplicación. Aún así, muchos se producen por el htaccess, por lo que la eliminación de este puede producir una mejora substancial en el rendimiento del frontal.

De hecho, como que toda la configuración del htaccess se puede pasar a la configuración del VirtualHost, no hay ningún tipo de problema en eliminarlo.

Su eliminación resulta tan simple como modificar el all por un none:

<Directory /var/www/proyecto.com/htdocs>
     AllowOverride none
</Directory>

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>