2 de Septiembre, 2010

Los servidores de Google envían spam

En general pasa con cualquier servicio de correo electrónico gratuito. Por muchas medidas que se pongan para intentar evitarlo, es imposible, siempre habrá alguien que use el recurso para enviar spam con más o menos eficacia.

Esto tiene consecuencias, como ya comentaba hace tiempo, incluso pasa en las mejores familias: si envías spam, puedes acabar en una lista negra. Aunque seas Google.

El caso es que hoy mi servidor ha estado rechazando algunos correos que se entregaban desde un MTA de Google que había caído en una de las listas negras de Sorbs.

Con la de problemas que he tenido con las listas negras, y aún estando convencido de que es muy difícil que no se acabe abusando, al final decidí usar un par de ellas :P.

El principal motivo fue mi volumen de spam tras el cambio de servidor (mi anterior proveedor de correo usaba listas negras, pero no se cuales), y la falta de tiempo para implementar una medida menos agresiva. Eso y porque se usan de todas formas (¡Google las usa!), por lo que es absurdo no beneficiarse de estos servicios (de todas formas ya abandoné mis protestas por el 2006 :P).

He llevado mucho cuidado al elegir las listas negras, y me he fijado en unos puntos que creo que son esenciales:

  • Al menos aparentemente no llevan a cabo abusos, y tienen buena reputación.
  • Me dejan elegir razonablemente entre distintos niveles de filtrado, o al menos no usan un filtrado muy agresivo (esencial para minimizar falsos positivos).
  • Es fácil dar de baja una IP y, por supuesto, hacerlo no tiene ningún coste.

Aún así, he tenido un falso positivo con Google: los mensajes rechazados no eran spam, y el perjudicado he sido yo por perder los mensajes.

Sigo estando en el bando de los detractores de las listas negras, pero el beneficio compensa estos accidentes de tanto en tanto (por ahora he dejado de usar Sorbs, y sigo solo con SpamCop).

Sé que algún sysadm lee por aquí ;), así que sería interesante conocer experiencias y opiniones acerca de las listas negras de correo.

Hay 0 comentarios, anotación clasificada en: antispam.

29 de Agosto, 2010

Los departamentos TIC y Linux

La migración de sistemas privativos a Open Source fue una constante en mi etapa en Valencia, y aún hoy desde UK participo en algunos proyectos de este tipo: de Websphere a Jboss, de Microsoft Exchange a Zimbra, de Microsoft Office a OpenOffice.org, de Microsoft Windows a una distribución de Linux, etc.

Muchas veces tenemos problemas con aplicaciones, incluso basadas en web, porque solo van con IE o en Windows por componentes Active X, o incluso peor (dependencia de alguna aplicación de terceros, como Microsoft Office; imagina que pides una aplicación a medida, pagas un pastón, y luego descubres que sin una licencia del producto sorpresa X no funciona :D).

Si dejamos de lado toda esa complejidad, al menos tendremos que cubrir la integración con los sistemas existentes antes de la migración, siendo habituales:

  • Autenticación y permisos vía LDAP o, con mala suerte, Active Directory.
  • Montado automático de compartidos vía CIFS, que pueden incluir movilidad de $HOME o no.
  • Algún tipo de autenticación local basada en lectores de tarjeta, o últimamente DNIe.

Las necesidades de cada cliente y de cada proyecto son distintas, y hasta aquí podemos resolver más o menos bien. Hasta que llegamos al principal escollo en las migraciones a escritorios Linux: el soporte del campo informático.

Hay distintas soluciones en el mercado, por ejemplo la administración suele contratar a grandes empresas que se encargan de hacer mantenimiento de los sistemas y tienen sus propias aplicaciones de gestión del parque informático.

Como es de esperar, estas aplicaciones no trabajan con sistemas Linux (que están apenas aterrizando en los escritorios empresariales, por lo que les interesa más obstaculizar que desarrollar el soporte :P). Nos encontramos con la papeleta de proporcionar algo que permita lo siguiente:

  • Inventariar las máquinas, tanto a nivel de software como hardware, con estadísticas de uso de las aplicaciones.
  • Actualización de aplicaciones, parches de corrección de errores y seguridad, pudiendo planificar las acciones (temporalmente, por grupos, etc), y además automatizarlas.
  • Gestión de configuración remota y centralizada, a nivel de sistema y de aplicaciones principales (al menos un entorno corporativo tiene el número bastante acotado).
  • Aprovisionamiento de estaciones nuevas.
  • Despliegue de aplicaciones.
  • Soporte al usuario, vía mensajería instantánea y escritorio remoto.
  • La posibilidad de realizar todas las acciones individualmente o por grupos (trabajar con 10.000 estaciones repartidas geográficamente en varios edificios que pueden estar incluso en distintas provincias, puede ser un gran problema :P).

Y además, al alcance del personal TIC de la organización. Esto no es fácil, ¿verdad?

En la primera migración que me encontré, no había nada que se acercara ni de lejos a los requisitos. Bueno, estaba Novell ZENworks, pero ya por aquel entonces el soporte de Linux era marginal y anticuado.

Las empresas fuertes detrás de Linux tienen sus soluciones (como Canonical con Landscape o Red Hat con Red Hat Network Satellite, por comentar las que conozco), pero resulta muy complicado plantear su implantación cuando requieren de una suscripción y lo que el cliente busca es saltar al ahorro del Open Source (vamos, que lo ven como algo mayoritariamente gratis).

Todo cambió bastante con la aparición de Spacewalk como proyecto liberado por Red Hat en Junio del 2008. Aunque solo (¡ya me parece bastante!) permite gestionar alunas distribuciones derivadas de Red Hat, cumple muchos de los requisitos de nuestra lista.

Aún así tiene algunas pegas, todas consecuencia de haber sido un proyecto gestado a puertas cerradas durante muchos años. La principal es depender de una base de datos Oracle (se ha trabajado para soportar PostgreSQL; pero todavía falta mucho para que sea una realidad). Creo que comercialmente la dependencia de Oracle es casi fatal (si algo es común, es la intención de alejarse de Oracle como proveedor asociado a alto coste).

Me parece que el panorama dista de ser el idoneo, y creo que es una necesidad importante en el escenario de las migraciones. No sé por dónde pasa la mejor solución, si mejorar Spacewalk, o que la actividad comercial de las propuestas de Canonical y Red Hat sea más afectiva.

Desde luego hay mercado, y en los últimos tiempo de crisis, mucho más.

Hay 2 comentarios, anotación clasificada en: software libre.

25 de Agosto, 2010

Oracle y OpenSolaris: la comunidad lo es todo

A estas alturas no es noticia, pero como seguí la apertura de OpenSolaris con cierto interés de la mano de Eric Boutilier (no he encontrado referencia mejor, su bitácora en SUN ya no existe), me parece buena idea comentar el cierre de ciclo por aquí.

La caída de OpenSolaris empezó en realidad con la adquisición de SUN por parte de Oracle, pero hasta el pasado 13 de Agosto, cuando se filtró una nota interna de Oracle sobre el futuro del proyecto, no parecía que OpenSolaris tuviera un mal futuro con Oracle.

Simplificando mucho, el principal argumento siempre ha sido que el producto estrella de Oracle, su base de datos, corre en Solaris como en ningún otro sistema operativo; con lo que el interés de Oracle por mantener con buena salud este sistema está claro. Lo que no es tan evidente es que ese desarrollo tenga que ser en comunidad, y es por ahí por donde quizás haya fallado OpenSolaris: sin una comunidad detrás, el modelo Open Source es inútil para Oracle.

Igual es solo impresión mía, porque personalmente no he llegado a interesarme demasiado en este sistema operativo (de hecho, he escrito poco sobre el tema en los últimos 5 años), pero parece que no ha llegado a arrancar una comunidad de desarrolladores independiente de SUN.

Un compañero de trabajo, Juanjo Amor, que sí ha estado más involucrado en la sección hispana de la comunidad (y además mantiene Gnome Hispano con OpenSolaris), me comentaba que le parecía que no ha llegado a cuajar la idea del Open Source entre los usuarios del sistema. Venían de la antigua versión gratuita de Solaris, y lo siguen viendo así: un sistema técnicamente brillante, que además pueden usar gratis.

No creo que se llegara a una situación como la que disfruta Linux, pero los sistemas BSD, con comunidades más pequeñas, están funcionando razonablemente bien durante muchos años, y con independencia de empresas.

Cuando se hablaba de posibilidades de fork, a principios de Abril algunos miembros de la comunidad lo veían inviable, resumiendo (quizás demasiado) en dos citas:

How are you going to replace the bright brilliant skilled and experienced Sun kernel engineers?, fuente (Call for Action).

We do have a community. It's alive and well. It's a community of users and administrators. We don't have community of developers. And this is why we can't just fork off and start anew, fuente (Call for Action).

Por eso titulares como Oracle acaba con OpenSolaris son tan peligrosamente acertados, aunque la CDDL permita efectivamente un fork, ¿quién podría sostenerlo? ¿El recientemente anunciado Illumos? ¿Nexenta?

Hacer un fork de un proyecto libre es siempre una posibilidad, pero en mi opinión debe ser el último recurso. Debilita al proyecto original y es realmente difícil que salga bien, sobretodo en proyectos de gran envergadura como lo es un sistema operativo, que además fue liberado tras muchos años de desarrollo cerrado (el know how pertence a la empresa que lo desarrolló).

En el campo de los sistemas operativos hay algunos casos de éxito, como el de DragonFly BSD, pero también puede ocurrir que un posible fork de OpenSolaris acabe extenuado como ya ocurrió con un proyecto tan interesante como OpenDarwin.

Quizás sea buena idea revisar el caso fallido de OpenDarwin para ver cómo pueden desarrollarse los acontecimientos, aunque OpenSolaris tiene cierta ventaja sobre aquel, porque sí hay una buena comunidad de usuarios. Veremos cómo los maneja Oracle.

Hay 0 comentarios, anotación clasificada en: opensolaris.

15 de Agosto, 2010

Vamos arrancando en Reading

Más o menos como cuando arrancamos en Exeter hace 6 meses, aunque nunca es igual, por lo que parece. Esta vez ha sido mucho más cansado.

Hicimos el viaje de Exeter a Reading en coche, porque había que mover muchas cosas como para usar transporte público (que además hubiera salido mucho más caro).

Tengo que confesar que me gustó la experiencia de 187 millas con la lluvia, el volante en el lugar equivocado, metiendo las marchas con la mano izquierda, y... todas esas cosas que se hacen aquí de otra manera ;).

Forbury Gardens
Forbury Gardens, con un impresionante león

Como la experiencia es un grado, ya estamos con todo el papeleo (aparte del alquiler del nuevo piso), véase: contratar electricidad, conexión a internet (Virgin de nuevo, estaremos unos días con un 3G para poder trabajar), agua, ponernos de acuerdo con el ayuntamiento para pagar nuestros impuestos, etc. La semana que viene quedará todo listo, y podremos desentendernos de toda esa historia, no obstante necesaria.

Cambiar de casa siempre cuesta, y empezar de nuevo en una ciudad distinta también. No sabemos dónde hay nada, y estamos andando una burrada para encontrar las cosas que vamos necesitando :S.

Vamos a echar de menos Exeter, pero Reading parece llena de posibilidades. Las fotos que he subido del paseo de hoy son prueba de ello :).

Hay 0 comentarios

8 de Agosto, 2010

Nautilus Flickr Uploader 0.06!

Hace varios meses que publiqué versión de Nautilus Flickr Uploader, y tenía un par de cosas pendientes de hacer (junto a una nueva traducción esperando en el repositorio).

Nautilus Flickr Uploader en Árabe
La última traducción de la aplicación

Principalmente quería mejorar la gestión de algunos errores que se dan aleatoriamente en la máquina de Alex, y aún no sé porqué. Flickr se queja de que la firma de la petición es incorrecta, pero reintentando... ¡funciona!

Es complicado ver porqué a veces va, y otras no, pero un efecto secundario de los reintentos es que se creaban varios hilos, y cuando Flick aceptaba la petición, acabábamos con imágenes duplicadas. Ahora esa parte es más robusta, mientras no descubro qué es lo que está fallando.

Otra cosa que tenía pendiente era dejar de usar Gtk2::SimpleList, porque está marcado para ser eliminado en futuras entregas de gtk2-perl.

La solución es usar Gtk2::Ex::Simple::List, del proyecto gtk2-perl-ex; que funciona exáctamente igual ;). Así que el cambio ha sido poco traumático.

Al final todo eran modificaciones triviales, pero como no lo sabía y he tenído otras cosas que hacer, se me ha retrasado todo un poco tontamente :(.

Si ojeamos la lista de cambios, no hay muchas novedades, así que me he puesto a actualizar el paquete para Ubuntu y Debian, que se había quedado congelado en la versión 0.03. Ahora está sincronizado con la versión para Fedora, por lo que recomiendo actualizar a los que vayan usando todavía la vieja 0.03 :P.

Según los datos de Flickr, en este momento hay 503 usuarios autenticados para usar la aplicación, con lo que parece que el invento funciona :D.

Hay 0 comentarios, anotación clasificada en: nautilus-flickr-uploader, perl, software libre.

28 de Julio, 2010

Diferencias cambiando de Perl a Python

Seguro que hay más diferencias, y ya las iré encontrando, pero la primera que realmente no me gusta es en el soporte de bases de datos.

Estoy programando una herramienta sencilla para hacer informes desde SQL a CSV (bueno, y más cosas... pero eso es lo principal: ysimplereports), y es la primera vez que accedo a una base de datos SQL desde Python (no, mis aventuras con Redis no cuentan, es un API específico).

La situación en Perl es la siguiente:

  1. Instalas DBI, que es el interfaz de Perl para bases de datos.
  2. Instalas el driver que toque, de todos los que hay, según lo que necesites.
  3. No hay paso 3.

Además, si tienes instalado perldoc (versión online), ya tienes la documentación, muy clara y con ejemplos, a la que puedes acceder incluso vía man.

En el caso de Python, la cosa es diferente. Después de andar algo perdido, pregunté en identi.ca (genial, el grupo de Python es realmente útil), porque tenía la impresión de que se me escapaba algo, y me apuntaron a el wiki de Python sobre programación de bases de datos.

En ese wiki hay un PEP (Python Enhancement Proposal), donde se enlaza el PEP 249, que define la especificación 2.0 para el API de bases de datos de Python.

En este punto, los pasos son:

  1. Buscar un módulo para la base de datos que quiero utilizar que implemente el mencionado PEP. Hay una lista de interfaces en el wiki.
  2. Instalarlo el módulo, y buscar la documentación, porque el PEP es general y no entra en detalles específicos (por ejemplo, parámetros de conexión).
  3. No debería haber paso 3.

Me comentan que el caso del módulo MySQLdb para MySQL es el que anda más flojo respecto a la documentación, pero la verdad es que he ojeado con pydoc en local, y me ha decepcionado bastante.

No es que no hayan ejemplos (que no los hay), sino que leer en la descripción algo como:

connect() -- connects to server

See the C API specification and the MySQL documentation for more info on other items.

Y más abajo, en funciones, algo como:

Connect(*args, **kwargs)
        Factory function for connections.Connection.

Digamos que da mala sensación :o.

En la web del proyecto, el módulo sí está documentado bastante bien (MySQLdb User's Guide), pero igual la alta calidad de la documentación de DBI (¡y no tener que acceder a una web!) me tiene mal acostumbrado.

Quizás la idea centralizada de DBI permite tener mayores controles de calidad, y además dé mayor sensación de cohexión, o igual es simplemente que, como me comentan, MySQLdb es el módulo más flojo en cuando a documentación vía pydoc.

No es algo fatal, pero siendo totalmente extraño a cómo funciona Python, el soporte de base de datos definitivamente no me termina de convencer :/.

Hay 2 comentarios, anotación clasificada en: perl, python.

18 de Julio, 2010

Comienza la mudanza, nos vamos a Reading

Hace cosa de 7 meses que avisaba que íbamos a vivir a Exeter, y 6 meses después de estar en esta hermosa ciudad, tenemos que empezar a buscar casa en Reading.

Gaviota
Me pregunto si llegaré a echar de menos a estas

Los motivos para mudarnos son principalmente dos:

  • Desde un punto de vista profesional, la zona de Exeter es muy complicada. Hay poco trabajo, y Alex está buscando colegio para el segundo año (ya es NQT, pero está obligada a un año más de inmersión).
  • Acordé con mi empresa que en Septiembre estaría cerca de Londres, para llevar a cabo tareas orientadas a negocio, y eso no encaja definitivamente con Exeter (aunque en tren no está tan lejos, no es práctico).

Así que con mucha pena, porque realmente nos gusta Exeter, hemos empezado a buscar un nuevo destino para el próximo año (al menos).

La decisión ha sido fácil, porque ya teníamos en mente una zona muy atractiva: cerca de Londres (30 minutos en tren a la estación de London Waterloo), con muchas empresas tecnológicas adecuadas para hacer negocio (con multinacionales como Red Hat, Oracle y SUN, Intel, SGI, Symantec, entre otras; y todo el ecosistema que generan alrededor), además de muchos colegios para Alex.

El motivo para elegir Reading y no otras ciudades de alrededor (es una zona curiosa, donde limitan 3 condados: Berkshire, Surrey y Hampshire), ha sido básicamente el tamaño y las comunicaciones (buen enlace en tren a Londres).

Ya tenemos cerrada la salida de esta casa, y estamos en la fase de buscar piso, con lo que puedo decir que a mediados de Agosto ya estaremos en Reading. Otra mudanza más :'(, ¿ya puedo considerarme experto?

Hay 1 comentario

15 de Julio, 2010

Barcamp Oxford y próximas Barcamp Valencia

A finales del mes pasado asistimos a la Barcamp Oxford 2010, y no he comentado nada por aquí. Además quiero aprovechar para contestar a una pregunta que me hacen de vez en cuando: ¿habrán más Barcamp Valencia?

Hace tiempo que miramos la posibilidad de asistir a la Barcamp Oxford, la Apache Software Foundation tiene bastante presencia allí y llevan un par de ediciones a las espaldas, así que pintaba muy interesante.

La verdad es que nos olvidamos completamente hasta justo el día antes, pero al final compramos un par de billetes de tren de Exeter a Oxford, y nos pegamos el madrugón para ir y volver en el mismo día.

Decidiendo el programa
Decidiendo el programa

Fue bastante interesante, porque en realidad nunca habíamos ido a una Barcamp (no, lo que hicimos en Valencia no es exactamente una Barcamp):

  • A primera hora se explicó qué es una Barcamp (alternativamente, tenemos las reglas de la Barcamp :P).
  • Se repartieron tarjetas para que la gente escribiera el título de sus ponencias.
  • Sin ningún orden especial, los ponentes se van presentando, introduciendo su charla, y pegando la tarjeta en un mural del programa, eligiendo sala y horario.

Y no hay nada más, el resto son las ponencias, que van desde el puro powerpoint, hasta otros estilos más flexibles, como un debate guiado por el ponente.

Hicimos lo posible por no ser turistas, participando con preguntas y opiniones, aunque con las prisas y la precipitación, no di ninguna charla :(.

La organización fue muy correcta, con todo pensado y más o menos planificado, muchos patrocinadores (comida, bebida, libretas con bolígrafos, y ¡hasta regalaban un mug a los asistentes!), y se notaba la mano de la ASF :P.

Foto de grupo
Foto de grupo, CC by-nc Sylwia Presley

Las diferencias de formato respecto a la Barcamp Valencia están más o menos claras: programa y ponentes planificados contra espontaneidad pura (los organizadores pasan a ser solo coordinadores/promotores).

No sé hasta qué punto el modelo Barcamp que disfrutamos en Oxford puede funcionar en Valencia (y España para el caso).

Por nuestra experiencia, aún intentando que Barcamp Valencia fuera lo más participativa posible por parte de los asistentes, me temo que la gente es más tímida, y está más por la labor de consumir, por cuéntame que yo escucho. Aunque esto permite también que nuestra Barcamp maneje más asistentes y escale mejor (me sorprendió mucho ver tan poca gente, para ser Oxford :o), consiguiendo un efecto divulgativo mayor.

Lo que me lleva a la pregunta: ¿cuándo es la siguiente Barcamp Valencia? La verdad es que no lo sé, pero que me hagan la pregunta ya apunta más o menos a la respuesta: ¡cuando tu quieras!

Desde luego mi vocación no es organizar eventos :D, aunque me parece interesante y la experiencia hace que todo sea más sencillo y el resultado mejor. Lo que no veo razonable es organizar un evento en Valencia viviendo en UK, así que no lo voy a hacer.

La continuidad de la Barcamp no depende de mi. He renovado los recusos (dominio, bitácora, correo) por un año más, y si alguien decide dar el paso, contará con ellos y con mi ayuda en remoto; pero no puedo ofrecer nada más por ahora.

Hay 0 comentarios, anotación clasificada en: jornadas.

7 de Julio, 2010

Varnish para acelerar nuestra web

Voy a explicar de forma sencilla como he implementado Varnish en este servidor, para acelerar algunas páginas que son casi estáticas, pero que se generan dinámicamente.

Ya hablamos sobre cómo acelerar la web con la caché, y aunque como servidor web trabajo con Cherokee, que es bastante eficiente gestionando su propia caché, poner a Varnish delante tiene cieras ventajas.

La primera de ellas es que este blog se sirve mediante un proxy HTTP (el servidor original es el de Tornado), y en ese caso concreto Cherokee por ahora no implementa caché :(.

Así que, por una parte me beneficio de las virtudes de Varnish para todo el servidor, y además consigo caché donde no tenía, a cambio de dedicar un poco de memoria al invento.

Mi servidor ahora funciona tal que así:

Diseño de la solución

Estoy trabajando con la versión 2.1.2 instalada desde fuentes, porque en la distro de mi servidor está la 2.1.0, y parece que merece la pena actualizar.

Hay que llevar cuidado con los requisitos, e instalar los paquetes de desarrollo de ncurses, porque el configure no se quejará, pero luego nos daremos cuenta de que no tenemos herramientas bastante útiles (como varnishstat o varnishtop).

Hay distintas formas de desplegar el caché, y a mi lo que me ha dado mejor resultado es:

  • Poner a Cherokee escuchando en el puerto 80, pero solo en 127.0.0.1. Esto es porque si usamos otro puerto, podemos tener problemas en algunas redirecciones (tengo pendiente ver si es un bug).
  • Poner a Varnish en el puerto 80, pero en la interfaz pública del servidor.

De esta forma, nuestro default.vcl empezará con:

backend default {
     .host = "127.0.0.1";
     .port = "80";
}

Así indicamos donde estará nuestro backend (Cherokee en este caso).

Lo siguiente que he hecho ha sido ignorar las cookies en todos los contenidos que sé que no las utilizan, y por lo tanto los queremos cacheados:

sub vcl_recv {
        # cache static content, even when there are cookies
        if (req.url ~ "\.(jpg|png|gif|gz|tgz|bz2|tbz|mp3|ogg|pdf)$") {
                unset req.http.Cookie;
                if (req.http.Accept-Encoding) {
                        remove req.http.Accept-Encoding;
                }
        }     
}

Todas esas extensiones sabemos que:

  • No cambian dinámicamente, y sobretodo no cambian por el hecho de haber una cookie. Por ejemplo, cuando trabajamos con usuarios autenticados.
  • Ya están comprimidos, así que podemos descartar el Accept-Encoding porque nunca los volveremos a comprimir, de forma que simplificamos qué se almacena en la caché.

Con esto ya es suficiente para arrancar Varnish.

Solo falta poner el servicio en el sistema de arranque (con init.d), porque instamamos desde fuentes. Por ejemplo, podemos usar:

#!/bin/sh

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="Varnish"
NAME=varnish
DAEMON=/usr/local/sbin/varnishd
SCRIPTNAME=/etc/init.d/$NAME

test -f /etc/default/varnish && source /etc/default/varnish

# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0

case "$1" in
    start)
        cd /
        echo -n "Starting $DESC: $NAME"
        $DAEMON $OPTIONS 2>&1 >/dev/null < /dev/null
        echo "."
        ;;
  stop)
        echo -n "Stopping $DESC: $NAME"
        pkill varnishd
        echo "."
        ;;
  *)
        echo "Usage: $SCRIPTNAME {start|stop}" >&2
        exit 3
        ;;
esac

exit 0

Y en /etc/default/varnish ponemos los parámetros para el servicio:

OPTIONS="-f /usr/local/etc/varnish/default.vcl -s malloc,64M -a IP_PUBLICA:80"

He puesto IP_PUBLICA en lugar de mi IP, y he dedicado 64MB de memoria a la caché, que no será persistente en disco (ahora mismo no le veo mucho sentido a la persistencia de la caché, aunque si reinicio Varnish, no habrá nada cacheado).

En mi caso (Ubuntu Server), ejecuto update-rc.d como corresponde para que el servicio arranque con el sistema, y ya estamos listos para trabajar.

Ya anticipé hace unos días los buenos resultados que estaba obteniendo con Varnish, y a nivel de efectividad de la caché ya tengo algunos datos recogidos con varnishstat (herramienta incluída en el paquete de Varnish):

34863    Client requests received
11051    Cache hits
22190    Cache misses

Hay más datos, pero estos son los más relevantes para los últimos 5 días. Eso es un 31,69% de las peticiones servidas desde la caché, contra un 63.64% de peticiones que acabaron en Cherokee.

Estos valores no están mal, porque a fin de cuentas la mayoría de mis visitas van a las páginas nuevas en esta bitácora, que no son cacheables. Aún así, tengo pendiente prestarle más atención, a ver si puedo mejorar el resultado :P.

Finalmente comentar que he detectado un problema entre Varnish y Cherokee con el Keep-Live, y por ahora tendremos que usar Cherokee sin Keep-Alive para evitar posibles errores 503 en Varnish si se da el timeout. Curiosamente me he dado cuenta porque aguanto poco tráfico, y no es un problema si tenemos un servidor muy ocupado, donde sí sería realmente útil una caché como la que nos propociona Varnish :P.

Hay 2 comentarios, anotación clasificada en: cache, cherokee.

2 de Julio, 2010

¿Qué diferencia hay entre usar caché y no usarla?

Como parece que no aprendo, después de mis malas experiencias con ab, he hecho un par de pruebas siguiendo mi esquema habitual (poco rigurosas y con resultados que hay que coger con pinzas :D).

Hace cosa de una semana monté Varnish, un acelerador HTTP (osea, proxy HTTP inverso), delante de mi servidor web, para intentar mejorar algo más el servicio de algunas páginas casi estáticas.

Las pruebas que he hecho son locales, desde la propia máquina, y en la primera ejecución voy a atacar a una página que tiene Varnish en la caché, pero que nos nos va a poder servir porque mandamos una cookie (recordemos que ese contenido no es cacheable, como comenté en acelerando la web con la caché).

El comando empleado es:

ab -k -C "test=1234" -c 10 -t 10 http://blackshell.usebox.net/archive/1308.html

El resultado no está del todo mal (teniendo en cuenta que la prueba es local y que interviene toda la pila completa de Cherokee + Tornado + Redis):

Concurrency Level:      10
Time taken for tests:   10.087 seconds
Complete requests:      300
Failed requests:        0
Write errors:           0
Keep-Alive requests:    300
Total transferred:      4835100 bytes
HTML transferred:       4725900 bytes
Requests per second:    29.74 [#/sec] (mean)
Time per request:       336.242 [ms] (mean)
Time per request:       33.624 [ms] (mean, across all concurrent requests)
Transfer rate:          468.09 [Kbytes/sec] received

Ahora repetimos la misma prueba sin enviar la cookie, con lo que podemos ver a Varnish en todo su esplendor:

Concurrency Level:      10
Time taken for tests:   10.000 seconds
Complete requests:      31944
Failed requests:        0
Write errors:           0
Keep-Alive requests:    31944
Total transferred:      513258394 bytes
HTML transferred:       503213832 bytes
Requests per second:    3194.28 [#/sec] (mean)
Time per request:       3.131 [ms] (mean)
Time per request:       0.313 [ms] (mean, across all concurrent requests)
Transfer rate:          50121.08 [Kbytes/sec] received

No estoy seguro, pero sospecho que es lo más rápido que puede ir esta máquina (eso son 391 Mbps en local), que nuevamente no está nada mal :D.

No me he dado cuenta y al hacer estas pruebas he contaminado las estadísticas que llevaba recogidas en Varnish, así que las voy a reiniciar, y cuando tenga datos, prometo una anotación explicando mi despliegue de este acelerador HTTP ;).

Hay 2 comentarios, anotación clasificada en: cache.

Entradas antiguas