Haciendo pruebas de carga

Para uno de los proyectos en el que llevo trabajando algunos meses nos pidieron que efectuaramos pruebas de carga de los servidores del proyecto para ver hasta dónde podríamos llegar y cómo reaccionaban dichos servidores ante la carga.

El primer problema fué encontrar la forma de simular peticiones sobre los servidores web de forma que estas simularan la actividad de los usuarios reales. Esto era un tanto difícil por la forma en que se autenticaban los usuarios y que la mayor parte del contenido se accedía una vez autenticado. Aquí encontramos dos posibles soluciones:

– Scripting con curl: Utilizando bash script y el curl realizábamos una auténticación en el sistema que quedaba almacenada en una cookie que se utilizaba posteriormente cómo credencial de acceso en las peticiones siguientes. La verdad es que curl es una herramienta que me encanta y que nos permite hacer cosas realmente ingeniosas cuando se trata de automatizar algunos procesos web y os la recomiendo encarecidamente. Además se desarrolló otro script para parsear los resultados de curl de forma que pudieramos obtener estadísticas de tiempos de acceso por número de usuario y por página visitada. Un saludote a @jorgecab que se curró la mayor parte de los scripts.

– Jakarta JMeter: Es una herramienta java bastante potente que nos permite definir escenarios muy variados de pruebas de carga y analizar los resultados. Una de las cosas que más me gustó es su herramienta de proxy web que te permite levantar un proxy contra el que enchufas tu navegador y simulas la navegación que quieres que luego se repita durante las pruebas de carga. Muy potente y bastante flexible, y por supuesto Open Source.

Una vez que disponíamos de nuestro generador de stress y antes de lanzarlo contra los servidores hay que asegurarse de tomar bien «la temperatura» a los servidores, es decir capturar el máximo de datos de su estado durante el periodo de las pruebas. Para ello utilizamos el paquete sysstat que nos permite medir con precisión una gran cantidad de elementos significativos dentro de nuestro servidor. Para ello utilizamos dos herramientas:

– Sar: Que nos permite muestrear una gran cantidad de información de nuestro equipo cómo por ejemplo: uso de las distintas CPUs, carga del sistema, uso de memoria, entrada/salida, red, etc… Para ello definimos los parámetros que queremos monitorizar, el periodo entre cada muestra y el número de muestras que vamos a tomar.

– Pidstat: De toda la información que obteníamos con sar sólo echaba en falta el poder comprobar el estado de los procesos y cuales eran los que estaban cargando la máquina. Después de buscar un rato descubrí que a partir de la versión 8 de systat se incluye la utilidad pidstat que nos permite tomar muestras parecidas a las de sar pero por procesos indicando los pids de los procesos a monitorizar o trabajando con todos ellos. Así podemos comprobar la subida y bajada del uso de memoria y de CPU de los procesos más significativos.

A la hora de estudiar el comportamiento del sistema y de generar el informe sobre las pruebas nos encontramos con otra herramienta muy interesante: kSar que nos permite sacar de forma sencilla gráficas a partir de los datos obtenidos mediante sar. También tenemos la opción de exportar directamente la salida de sar o pidstat a un fichero csv y importarlo en nuestro openoffice calc para crear gráficas.

¡ A toda máquina !

Si con dos no te basta, suma la del portatil: x2x

Desde hace tiempo que vengo trabajando con dos pantallas en mi estación de trabajo y la verdad es que es un gustazo. Disponer de un espacio de trabajo de 2560×1024 es otra dimensión y es realmente útil a la hora de tener dos vistas completas al mismo tiempo: el editor de texto y google para extraer información, dos trozos de código a comparar, el gimp con todas sus herramientas desplegadas, etc… Algunos problemas que tuve al principio fueron que metacity no me colocaba correctamente las ventanas nuevas y solía mandarlas a la otra pantalla, lo que resultaba muy molesto. Al parecer esto se podía evitar utilizando compiz, pero en las primeras versiones se pegaba de tortas con los drivers de mi nvidia configurada con 2 monitores y se comía toda la cpu, aparte de ir muy lento. Con las versiones actuales de compiz o de los nuevos drivers de nvidia se ha solucionado el problema y ahora al abrir nuevas ventanas se abren en la misma pantalla en la que tengo el puntero. Digamos que sólo me falta solucionar un defectillo con el splash de algunos programas que se posiciona en el medio, es decir mitad en cada monitor. 😛

9x multiscreen

Pero dándole vueltas a esto, muchas veces tengo también sobre la mesa el portátil y es un rollo tener que cambiar de teclado y ratón para manejarlo y lo ideal sería poder controlarlo también con el mismo teclado y ratón que mi estación de trabajo. Bueno pues para eso tenemos x2x que nos salva la papeleta de maravilla. Tras permitirle acceso a las X del portátil a la estación mediante xhost, lanzamos en esta x2x indicandole a que lado de nuestras pantallas tenemos el portátil. Cuando el cursor llega al final de la pantalla de la estación de trabajo se pasa limpiamente a la pantalla del portátil y podemos controlarla sin cambiar las manos ni sufrir el calorcillo de nuestro pequeñin. Incluso podemos cortar y pegar texto de uno en otro, ya pasar ventanas teniendo en cuenta que son dos equipos diferentes parece un poco más complicado, pero seguro que se podría hacer. Incluso si no usamos Linux en nuestro portátil podríamos controlarlo si tenemos instalado vnc con x2vnc

Wifi 2 Wimax (II parte): el Wi2

Aunque parece un trabalenguas no lo es, más bien es un equipo que nos va a facilitar mucho la vida a la hora de instalar nodos mixtos Wifi/Pre-Wimax (en este post anterior veíamos cómo hacerlo integrando un punto de acceso y el CPE pre-Wimax) y es el producto de Alvarion Wi2. En un sólo montaje disponemos de un CPE de pre-Wimax que nos permitirá conectar con nuestra red troncal y de un emisor de wifi que va a permitir conectarse a la red a cualquier persona que disponga de equipo wifi convencional. Aquí está la foto que hemos realizado en un edificio, pero realmente dónde se ve la ventaja de tenerlo todo integrado es cuando instalas en postes o farolas en plena calle.

Wi2 isntalado

Para mi gusto le falta tener capacidad de Mesh, aunque creo que Alvarion estaba desarrollando un modelo que te permitía repetir hasta un salto estaría bien tener posibilidades de desplegar algunos con enlace al troncal y luego el resto de los nodos de la cercanía interconectados por Mesh.

En la Retromadrid 2008

Una de las cosas que me encanta de Madrid es la increíble cantidad de cosas que hay para ver y hacer no sólo en la parte lúdica y cultural, sino para alimentar nuestro lado más geek. Cada año cuando me enteraba de que se iba a celebrar la MadriSX se me ponían los dientes largos y pensaba ¿merecerá la pena pillar un tren para pasar un día entre mis cacharrejos favoritos? Bueno ahora tengo la suerte de poder pillar un metro y en menos de media hora estar ahí. ¿Algo bueno tenía que tener no?

Retromadrid 2008

La rebautizada MadriSX, ahora llamada Retromadrid para abarcar un concepto más amplio ya que hay cosas de spectrum, amstrad, atari y muchos otros, así cómo consolas antiguas y muchas otras cosas, es una auténtica pasada. Aunque ocupa sólo una sala pasear entre todos esos portentos de 8 bits, ver pantallas de tus juegos favoritos aunque sea sobre el fosforo verde y ver que todavía se desarrolla para estas plataformas te hace estar un par de horas con cara de niño. Hasta puedes estar un buen rato jugando al pacman cómo si fuera la última novedad y pensar: eso sí eran juegos.

Retromadrid 2008 stand

Tuve en mis manos el One Chip MSX y me encantó, tanto que me dieron ganas de pillarme uno, pero sé que mi viejo Mitsubishi MSX 2 se habría sentido celoso y conseguí mantenerme fiel. También me encantó echar una partidilla con el mando de la Megadrive, el de seis botones, y recordar el funde que le he dado al mio. Lo que eché en falta este año fué el juego de los patos de la NES en el que año pasado tuvimos un buen pique.

En el post del año pasado dejé un listado de palabras que me producen esa sensación de volver a ser niño.

Hartito del spam

Hartito me tiene el spam, que da día llega en mayor cantidad de mi buzón de turegano.net. La verdad es que desde que implanté mi correo tragalotodo (Ver entrada anterior) el 99% del spam ya aparece en la carpeta de Spam. Pero ahora me dá rabia tener que borrar diariamente 150 correos de esa carpeta así que voy a implantar dos medidas:

– Eliminar directamente los mails con una puntuación superior a 8 en el .procmailrc:


:0
* ^X-Spam-Level: [*][*][*][*][*][*][*][*]
/dev/null

– Añadir un script que elimine los ficheros de la carpeta de spam que lleven más de 4 días. Así no tendré que borrarla a mano sino pasar de vez en cuando a ver si hay algún falso positivo.

ACTUALIZACION 09/03: Ufff, que gustazo, ahora mi carpeta de spam contiene tan sólo 3 o 4 mensajes a revisar en caso de falso positivo y no tengo ni que borrarlos, desaparecen solitos.

Monitorizando el Belén

Tranquilos, que no me he vuelto loco con tanto turrón y polvorón. Pero vamos que en la vida de un ingeniero terminas teniendo que hacer un poco de todo. Una de mis últimas misiones para salvar el mundo y la Navidad ha sido: Monitorizar el Belén. Al parecer unos malos malosos se dedican a robar las figuras del Belén y este año no se lo íbamos a permitir. Así que nos tocó instalar una cámara IP para que la policía pueda vigilar el Belén directamente desde sus oficinas.

Belén Getafe

Hemos utilizado una cámara Axis 214 Ptz montada en una farola frente al Belén. En este caso la cámara está cableada pero los futuros montajes se harán mediante técnología inalámbrica Wimax, lo que nos dá la posibilidad de añadir cámaras en lugares remotos y a las que podemos acceder directamente ya que están conectadas a nuestro troncal Wimax. Una de las cosas que más me gustaron de la cámara es la potencia de su zoom y su buena resolución, la verdad es que quedamos asombrados por su capacidad. Esperemos que cumpla a la perfección con su labor y el belén quede a salvo. 😀

Cámara belén

Y ya hablando de Belenes, aquí os dejo una fotillo de nuestro Belén, que me regalaron cuando estuve en México, y que hemos completado este año con nuestro arbolito nevado y una estrellita de madera pintada.

Belén

¡Ande, ande, ande, la marimorena! 😉

Tras la muralla 2

Aquí tenemos una herramienta muy útil para complementar las que comentábamos en el primer post tras la muralla para solventar los problemas con algunos firewalls y proxys agresivos que no nos dejan acceder a algunos sitios.

Anónimo

En este caso es un proxy online que funciona a las mil maravillas y nos va a permitir enmascarar las peticiones que hagamos a otras páginas a traes de él engañando así a las reglas del proxy. Se trata de la web: www.anonimizador.com. Espero que os sea útil. 😀

Añadir drivers al initrd

Hacía tiempo que no me encontraba en una situación en la que tuviera que incluir algún driver en el initrd y en la última semana me he encontrado con dos seguidas. El initrd es un sistema de ficheros temporal que utiliza el kernel de linux al arrancar, casi siempre para poder acceder a ficheros de la partición raiz antes de que esta pueda ser montada (via wikipedia).

Tux Jedi

El primer caso ha sido al pasar de un sistema linux instalado en una máquina virtual que he instalado sobre un servidor real. Para ello hice una instalación básica de la misma distribución linux y sobre ella volqué los ficheros comprimidos en tar de todo el sistema de ficheros contenido en la virtual. El problema es que el driver del raid, mptscsi.ko, para la controladora no estaba en el initrd y obteniamos un bonito kernel panic. El segundo caso fué al hacer la actualización de seguridad del paquete del kernel en otro servidor, fuí advertido por up2date de que había un módulo cargado en el actual kernel que no estaba disponible en el paquete del kernel actualizado. Para ello tuve que buscar el módulo del driver, en este caso megaide.ko, en la web del fabricante copiarlo en su ubicación correcta y reconstruir el initrd.

La solución es bastante sencilla y para por reconstruir el initrd, en el primer caso utilizando un cd de rescate y en el segundo ya teníamos la máquina arrancada con un kernel antiguo. El comando sería parecido al siguiente:

mkinitrd /boot/initrd-2.6.9-55.0.2.ELsmp.img 2.6.9-55.0.2.ELsmp –with=megaide.ko