General

Paralelizando clientes para pruebas de estrés en aplicaciones Web

El pasado 4 de junio tuve la oportunidad de compartir con la gente de Iguana Valley una presentación nivel 100 sobre balanceo de carga y alta disponibilidad en aplicaciones Web, con motivo del último RefreshUIO, un evento mensual de emprendimientos y tecnologías Web que se hace en la ciudad de Quito.

Además de presentar algunos escenarios de clusterización para balanceo de carga y/o alta disponibilidad, que ya he expuesto y documentado en el blog y en los artículos de mi Scribd previamente, y algunos nuevos escenarios interoperables que estaré presentando como parte de mi trabajo en los próximos días, algunas personas me preguntaron sobre el script que utilicé para generar carga sobre el cluster y demostrar el balanceo de carga que realizaba IPVS (LVS) en Linux.

Este script está en realidad basado en el concepto que desarrollé para las pruebas de stress de LDAP, utilizando Perl con threads. Recomiendo que lean ese artículo antes de utilizar este script. El código del script sigue a continuación, y lo único que deben indicar es el número de threads que deben ejecutarse y la URI a solicitar. El script utiliza LWP, y bota en STDOUT la salida decodificada de la ejecución, por lo que quizás quiera pasar la salida por grep o enviarla a algún otro sitio.

## plt-bambam.pl -- Web Server Stress Testing Adaptation#   (C) 2008-2011 José Miguel Parrella Romero ## This is free software, released under the terms of Perl itself.#use strict;use LWP::UserAgent;use threads;use threads::shared;$|=1;my @threads;## CONFIGURATION#my $uri = 'http://192.168.56.100/';my $count = 200;## END OF CONFIGURATION#my $ua = LWP::UserAgent->new;while ( $count ) {  push(@threads, threads->new(&query));  --$count;}foreach my $thread (@threads) {  $thread->join();}sub query {  my $res = $ua->get($uri);  print $res->decoded_content;}
Standard

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s