lunes, 26 de marzo de 2012

Sobre logs y rendimiento

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.

miércoles, 21 de marzo de 2012

Consejos para asistir a la IV Noite Drupal & GNU/Linux en A Coruña


Se acerca la IV Noite Drupal & GNU/Linux en A Coruña . Comentaré unos detalles a modo de consejos que pueden ser útiles para los asistentes, sobre todo para los que acuden por primera vez a este tipo de eventos.

  • Descansa. Duerme bien por que la jornada promete. En esta edición comenzaremos a las 11:00 de la mañana, así que imagínate....No te acuestes "a las tantas" sobre todo si tienes que desplazarte el mismo día del evento.
  • Contactos. Email , Twitter o incluso el teléfono de alguno de los organizadores puede ser de gran ayuda si tienes dificultades para llegar, buscar aparcamiento...En drupal_gl(@)googlegroups.com puedes incluso preguntar si alguno de los asistentes viajará en coche.
  • Más contactos. No tengas reparo en pedir "email", "twitter" o "perfil en Drupal.org". La #noitedl es un evento para promocionar Drupal, GNU/Linux y software libre, pero también para conocer a gente "nueva" y proyectos más que interesantes en los que poder participar o aportar. Visitar los sitios web de los organizadores también puede ayudarte: Ociorum, GALPon, Inestable e Comunidade O Zulo .
  • "Be social". ¿Tienes identi.ca?¿Twitter? ¿Facebook?¿Web?¿Flickr?Promociona el evento en las redes sociales! El hashtag "oficial" será #noitedl .
  • ¿Portátil?. Sí, es recomendable traer portátil, sobre todo si estás interesado en aplicar los conocimientos, módulos y "hacks" que se comenten/aporten durante toda la jornada. Mi consejo particular es que NO te pares demasiado en la instalación. Céntrate en lo que es Drupal(siempre desde mi punto de vista) los conceptos básicos : core, módulos y theming.
  • ¡No uso GNU/Linux! . Nadie se ha muerto por no usar GNU/Linux. Estarás rodeado de fauna GNU/Linuxera, así que si decides dejar el lado oscuro, es un buen momento. En caso contrario, saber qué es un "stack" puede facilitar tu aterrizaje en la #noitedl.
  • Colabora. Si tienes tiempo colabora con la organización. ¿Cómo? En ocasiones ayudar a montar una mesa o configurar un punto de acceso wireless es más importante que "un nuevo módulo que lo flipas". Ayúda a la organización!
  • Únete.Hemos creado un grupo de "usuarios galegos" de Drupal en http://groups.google.com/group/drupal_gl . ¿Tienes dudas?¿Alguna consulta? ¿Recomendaciones? Únete, te estamos esperando.

Nos vemos este sábado en A Coruña!

miércoles, 8 de febrero de 2012

#lav012 primeras impresiones

El pasado fin de semana, y en representación de la "Asociación Comunidade O Zulo" de Mugardos estuve junto a @probatto en el #lav012 en Vedra.



#lav012 es un evento organizado por la "Asociación Sen un peso"(sin un duro), creada en 2009 con el objetivo principal de organizar el Laboratorio Audiovisual de Vedra.


¿Qué pinta @apermuy en este fregado?
@quenerapu me planteó la posibilidad de colaborar vía @ozulo con la gente de @senunpeso, y claro, como me ofreció todo tipo de sustancias psicotrópicas, pues...acepté.

¿Qué necesitaban, tecnologícamente hablando, de tí y de @ozulo?
El principal problema es que no tenía ni sabían como montar un red wireless usando las famosas redes educativas de edu.xunta.es. Nosotros(@ozulo) tenemos experiencia acumulada tras ocho(8) ediciones del CiberEncontro Kernel, así que nos lanzamos.


¿Mucho software libre en #lav012?
La red que montamos corre sobre Zentyal, así que por parte de @ozulo, como suele ser habitual, siempre libres. @quenerapu en su "master class" también usaba GNU/Linux, pero por lo demás no he visto mucho swlibre.

Y entonces..qué?
Para @ozulo es muy importante la asistencia a #lav012, pues la filosofía del evento y de la asociación Senunpeso.org es muy similar a "nuestra" forma de pensar. En lo personal, qué os voy a comentar. Conocer a Mon, a Xurxo y a @tuitfer a sido un verdadero placer, y bueno, coincidir de nuevo con @quenerapu , ni te cuento. Lo mejor: que aún queda otro fin de semana!

Salud!

Curso #cdiets Vimianzo, primeras impresiones.



Ayer Martes impartí la primera sesión de un curso presencial de 12 horas en Vimianzo. Drupal, como casi siempre desde los últimos dos años, es el "culpable" de que yo sea el docente de este curso.

Llegar a Vimianzo desde Santiago de Compostela es una pequeña odisea, sobre todo si te dejas aconsejar por un GPS. En varias ocasiones durante el viaje de ida pensaba que no llegaría a tiempo a la primera jordana.

Vaya si llegué. La primera sorpresa fue el aula. Un aula limpia y ordenada, con unos 20 pcs para los alumnos y alumnas y un pc para el docente con conexión a Internet y un cañon de vídeo. Me sorprendió gratamente la proporción masculino/femenina: 1 a 17 para las "chicas". La verdad es que no suele ser habitual encontrarse con estas proporciones, sobre todo en el mundo de la tecnología. Espero dentro de un tiempo no volver a hacer este tipo de comentarios.

Mis alumnas/os llegaban a la jornada Drupal con carencias palpables para citar un navegador que no fuese Internet Explorer. Después de una charla de "evangelización" , descripción del entorno y una pequeña dosis de confianza, todos, incluídos el que suscribe,nos fuimos soltando. Tanto que al final de la clase ya podían distinguir funcionalidades del "core" y otras aportadas por "módulos contribuídos". Nunca tuve dudas sobre la enseñanza pública en el estado español, si bien es cierto que en ocasiones he criticado el sistema educativo, y puede que incluso que también lo haya echo duramente contra los docentes. No es el caso. En la primera sesión(y esperemos que sea así en las tres restantes) han demostrado una capacidad de asimilación y de aprendizaje que ya les gustaría a muchos "engineering" y "project manager" con los que coincido en el algún que otro proyecto. (Creo) que han vencido el miedo a enfrentarse a una tecnología nueva. Estoy contento. Y lo estoy por que no es mérito mio, yo sólo recito lo que he aprendido estos 12 años, es suyo.

Salud!

martes, 31 de enero de 2012

Pesadillas...



Si alguna vez habéis trabajado con Unix/Linux/MacOSX y después con Microsoft Windows, os habreis dado cuenta de que el S.O de Redmond es una pesadilla. Pesadilla para sysadmin, pero sobre todo para developers.Un par de ejemplos ayudarán a ilustrar la afirmación.

El pasado fin de semana "compramos" un libro en formato Adobe Digital Editions, por supuesto con su flamante DRM. El caso que sólo puedes imprimir 20 páginas. ¿Sólo 20? Si señoras y señores, sólo 20, así que si necesitas imprimir 300, como es el caso(el libro tiene 1091 páginas) pues te compras la versión "física" y te buscas la vida. Pero, si el libro es mio?. Lo sé, pero el DRM también lo sabe...Buscando información sobre cómo eliminar la restricción encontré este post "Desproteger documentos de Adobe Digital Editions con Calibre" de Álvaro Matiz , que con un par de scripts escritos en Python soluciona la papeleta al 100%. ¿Python en Windows? Sí, en Windows. Echo de menos ejecutar una aplicación .py con un simple ./ , pero con el maligno es imposible. A descargar Python 2.7 para Windows. Como aquí no tenemos apt ni yum ni zipper pues tocar navegar y buscar. Instalo Python, ejecuto el script y "fail", dependencia de la librería pycrypto, otra vez la misma historia: busca, instala, prueba...Después de 30 minutos terminé la operación con éxito. Una operación en GNU/Linux podría llevarme a lo sumo 5 minutos....Por cierto, si no conocéis Calibre, ya estáis tardando...

El segundo ejemplo es más de lo mismo. Actualmente estoy trabajando, en mi tiempo libre en un proyecto con Drupal 6 y webservices. Al instalar el módulo simpletest es necesario patchear el core de Drupal, y claro, con Microsoft Windows, es una pesadilla. En la documentación de Drupal, entre otros, recomiendan Eclipse para solucionar la "papeleta", pero ¿cómo? ¿Eclipse? Yo no uso Eclipse, y ni por asomo lo pienso instalar para aplicar un patch. El caso es que navegando encontré "UnxUtils" , port de las "GNU utils", nativas para Win32, que sólo dependen la librería msvcrt.dll: Microsoft C-Runtime y no una emulación vía Cygwin, como indican en la web del proyecto.

Un consejo: piensa un poco antes de encender tu ordenador y arrancar un sistema operativo Microsoft Windows.

Salud!
P.D: Utilizo Microsoft Windows por imposición laboral. ;)