systemadmin.es > LAMP y web > Estáticos que no son estáticos

Estáticos que no son estáticos

En una web con WordPress con un problema conocido de un plugin lento, se me dijo que no podía ser únicamente el problema el plugin ya que incluso el fichero robots.txt era lento. Evaluandolo mediante curl se puede comprobar:

$ curl www.kakaweb.com/robots.txt -o /dev/null -w 'con %{time_connect} ttfb %{time_starttransfer} total: %{time_total}\n' 2> /dev/null
con 0,115 ttfb 1,067 total: 1,067

Es evidente que hay algún problema, una opción es seguir las llamadas al sistema con strace:

[pid 26231] <... accept resumed> {sa_family=AF_INET, sin_port=htons(50317), sin_addr=inet_addr("5.6.7.8")}, [16]) = 11
[pid 26231] fcntl(11, F_GETFD)          = 0
[pid 26231] fcntl(11, F_SETFD, FD_CLOEXEC) = 0
[pid 26231] getsockname(11, {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("1.2.3.4")}, [16]) = 0
[pid 26231] fcntl(11, F_GETFL)          = 0x2 (flags O_RDWR)
[pid 26231] fcntl(11, F_SETFL, O_RDWR|O_NONBLOCK) = 0
[pid 26231] read(11, "GET /robots.txt HTTP/1.1\r\nUser-Agent: curl/7.29.0\r\nHost: www.kakaweb.com\r\nAccept: */*\r\n\r\n", 8000) = 92
[pid 26231] stat("/var/www/web/robots.txt", 0x7fff8af66620) = -1 ENOENT (No such file or directory)
[pid 26231] lstat("/var", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid 26231] lstat("/var/www", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid 26231] lstat("/var/www/web", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
[pid 26231] lstat("/var/www/web/robots.txt", 0x7fff8af66620) = -1 ENOENT (No such file or directory)
[pid 26231] openat(AT_FDCWD, "/var/www/web/", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 12
[pid 26231] getdents(12, /* 24 entries */, 32768) = 840
[pid 26231] getdents(12, /* 0 entries */, 32768) = 0
[pid 26231] close(12)                   = 0
[pid 26231] stat("/var/www/web/robots.txt", 0x7fff8af664e0) = -1 ENOENT (No such file or directory)
[pid 26231] stat("/var/www/web/robots.txt", 0x7fff8af664e0) = -1 ENOENT (No such file or directory)
[pid 26231] stat("/var/www/web/index.php", {st_mode=S_IFREG|0644, st_size=395, ...}) = 0

Podemos ver que en relidad, no esta encontrando el fichero robots.txt, por lo que finalmente se esta ejecutando código PHP mediante el index.php y no es que devuelva un 404 sino que sí que devuelve el fichero:

$ curl www.kakaweb.com/robots.txt 
User-agent: *
Disallow: /wp-admin/
Disallow: /wp-includes/

Por lo tanto, dicho fichero es generado mediante PHP, lo que implica al no ser realmente un estático no podemos esperar los mismos tiempos de respuesta, y mucho menos si hay un problema conocido con un plugin. En este caso, podemos mejorar el tiempos de respuesta simplemente creando el fichero robots.txt con el contenido devuelto. Evidentemente el tiempo de respuesta mejora sustancialmente:

$ curl www.kakaweb.com/robots.txt -o /dev/null -w 'con %{time_connect} ttfb %{time_starttransfer} total: %{time_total}\n' 2> /dev/null
con 0,057 ttfb 0,092 total: 0,092

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>