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>
Relacionados
Imprimir
Deja un comentario: