Pasar al contenido principal
Alberto Permuy Leal

Menú de navegación

  • Home
  • Blog
  • Proyectos
  • Arsenal
  • Conciertos
  • Acerca de
  • Contacto

Ruta de navegación

  1. Inicio
  2. Blog de Alberto Permuy Leal

Sobre logs y rendimiento

Por Un veloz murci… (no verificado), 26 Marzo, 2012
El pasado fin de semana en la IV #noitedl en A Coruña los asistentes al evento que tuvieron la desgracia de escucharme vieron estupefactos cómo un webserver en producción escribía sin parar en el fichero /var/log/apache2/access-dominio.log más de 600.000 líneas, y claro, la culpa no "fue del cha cha chá" si no del sysadmin quepor suerte o por desgracia no soy yo.

Al grano. Cada vez que un servidor web recibe una petición HTTP "suceden un montón de cosas" pero en lo que a "logs" se refiere, a menos que "alguien" se encargue del tema, estamos ante una carnicería de llamadas al sistema. Cuando una aplicación "necesita hablar con el sistema operativo" lo suele hacer vía "system calls", siendo estas diferentes para cada sistema operativo.Debemos ser conscientes de que un syscall es "caro": necesita "comunicarle" al ssoo que tomará el control de la CPU, el ssoo tendrá que "guardar y comunicar su estado"; en definitiva : consumo de recursos. Podéis consultar el listado de syscalls para sistemas operativos Linux en este enlace: syscall(2) - Linux man page.

¿Evitando el uso de operaciones I/O en un webserver podemos incrementar su rendimiento? Por supuesto.

Para Apache2.

Módulo: setenvif
Testeado en : Apache 2.2.21
Doc del módulo: http://httpd.apache.org/docs/2.2/mod/mod_setenvif.html
Ejemplo de uso: Queremos evitar que cada vez que un VirtualHost sirva .css|.jgeg|.png no escriba en el fichero log.

Definimos una "variable de entorno" basura del tipo "Request URI" e incluímos las extensiones de los ficheros que no queremos incluír en el "log".


SetEnvIf Request_URI "(\.png|\.jpeg|\.css|\.js)$" basura


Indicamos en el fichero "log" que no incluya las peticiones http que coincidan con el patrón definido para la variable basura.


CustomLog /var/log/apache2/access-sitio-org-log common env=!basura

También para Apache2 me ha gustado mucho el ejemplo de este sitio web en el que redirecciona a otros sitios web peticiones típicas de exploits. Por cierto, leer algo sobre mod_rewrite es más que recomendable para entender cómo funciona el módulo setenvif. Otro enlace interesante y directo al grano.

Para Nginx
Módulo: HttpCoreModulo
Testeado en : Nginx 1.0.14
Doc del módulo: http://wiki.nginx.org/HttpCoreModule

Incluir en el fichero de configuración del virtual host:


location ~* ^.+\.(?:css|js|jpe?g|png)$ {
access_log off;

}


Poco más voy a añadir sobre Nginx. Os recomiendo revisar el espacio github de Antonio Almeida ,@perusio , una eminencia en Nginx y High Perfomance.

Quizá te interesen estos artículos...

Cuaderno de bitácora: migración abeancos.gal - Nota 1

Publicado el 16/06/2025

Como descargar música desde Spotify con docker en Linux

Publicado el 10/05/2025

Activar Wake On LAN (wol) al iniciar Debian 12

Publicado el 28/09/2024

Aviso legal 


Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional.

Sígueme en Mastodon

Powered by Drupal