Efecto Dog Pile

El Dog Pile, es un efecto de sobra conocido en sistemas de gran entidad y un total desconocido en el resto, para los que no forméis parte del selecto grupo de personas que se enfrentan de manera más o menos habitual a el, voy a intentar explicar que es y como enfrentarse a el la primera vez que os lo encontréis.

 

 

Puesta en situación, con un ejemplo:

Centrándonos en el mundo de las aplicaciones web (por acotar un poco), si estas obtienen éxito (pensad por ejemplo en facebook), empiezan a recibir gran número de visitas y a menudo con un crecimiento exponencial de las mismas en poco intervalo de tiempo. El escenario anterior nos enfrenta al problema de la escalabilidad de nuestra arquitectura, que por supuesto no será tal porque somos unos ti@s maj@s, con un gran número de trucos en la chistera y rápidamente presentamos nuestro plan de acción al CIO:

  • Vamos a desplegar una serie de caches que:
    • Reducirán la latencia.
    • Reducirán el tráfico sobre nuestros servidores web.
    • Ahorraran ancho de banda.
    • Nos convertirán en empresa guay, ya que todo el mundo sabe que la complejidad hace chula nuestra infraestructura :-).

Durante un tiempo la solución funcionan, el tráfico no deja de crecer y la arquitectura aguanta sin mayor problema hasta que….

El fatídico día:

El día que alcanzamos tropecientos mil visitantes simultáneos, con los jefes descorchando las botellas de champagne a nuestro alrededor…algo ocurre, la monitorización avisa de que la carga en los servidores web se ha disparado en un instante hasta el infinito y no pueden atenderla……pero….

 

¿Qué ha pasado?

Hemos sufrido lo que se conoce como Dog Pile, efecto que se produce cuando uno o varios contenidos muy populares (con gran número de descargas) expiran en las caches y de golpe, todas esas peticiones se pasan a los servidores web, para que os hagáis una idea, básicamente el efecto de las caches (recordad que están allí porque las necesitamos) desaparece de golpe y las peticiones pasan en avalancha a los pobres servidores web, que por supuesto no pueden atender tal demanda.

 

 

¿Tiene solución?

El problema se puede abordar de diferentes manera y aunque podríamos estar tentados a recomendar la adquisición de más servidores y de mayor capacidad, puede que la solución sea tan fácil como revisar el comportamiento de las caches ante la expiración de objetos, que básicamente será:

  • Pasar todas las peticiones recibidas al los servidores origen (Provocando el Dog Pile)
  • Retener encoladas las peticiones y pasar unicamente una al servidor origen,  de esta manera no provocamos el Dog Pile y una vez renovado el objeto en las caches, podemos atender el resto de peticiones.

Aunque la solución pasa de manera clara por encolar las peticiones, nos encontraremos con que no todos los caches soportan esta feature, con lo cual nuevamente habrá sido vital la experiencia de nuestro arquitecto de sistemas a la hora de prever este y  otros efectos derivados de un alto tráfico.

3 comentarios en “Efecto Dog Pile

  • Hola
    Muy interesante la entrada. Tengo un par de preguntas.
    Y de los sistemas de caches que hay actualmente (libres o de pago) ¿cuales lo soportan? ¿Es algo que hay que configurar o por el contrario se trata de un comportamiento inherente al sistema?
    Muy buen blog, sigue asi: aunque comentamos poco, somos muchos quienes te seguimos.
    Un saludo

    • Hola Antonio, me alegra saber que no estoy “predicando en el desierto” 😉 y que te parece interesante el contenido , con respecto a tus preguntas. Sistemas de caches hay muchos, tanto comerciales como libres y su funcionalidad puede ir desde cubrir el cacheo de imágenes y ficheros varios, a el resultado de sentencias SQL, para el caso del ejemplo y quizás el tipo de caches más conocidas (las que optimizan el tráfico web), nuevamente encontraremos que tenemos bastantes opciones, aunque casi siempre (al menos en los casos que conozco yo), se opta por software libre para implementar esta capa de cacheo. El software libre más conocido para esta labor es Squid, Varnish y Apache Traffic Server, cada uno de ellos con sus pros y contras y explicarlos daría casi para un libro :-).

      Efectivamente no todo el software soporta el encolamiento de peticiones, hasta donde yo se, con las versiones actuales ATS (Apache Traffic Server) no lo hace, Squid desde las versión 2.6 si (http://www.squid-cache.org/Doc/config/collapsed_forwarding/) y Varnish también lo hace, en cuanto a si vienen activas por defecto o no, depende del software y sobre todo es algo que puede cambiar de una versión a otra, por lo que siempre deberías comprobarlo si esperas enfrentarte a problemas de este tipo, a modo de referencia este tipo de opciones suele venir deshabilitada por defecto, ya que incrementa el tiempo de respuesta a la hora de servir el contenido en el caso de que se produzca un Dog Pile.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.