sábado, 10 de septiembre de 2011

Monitorización de recursos en las Pruebas de Rendimiento.

1  Consumo de Recursos.

En las Pruebas de Rendimiento se busca estresar una aplicación introduciendo concurrencia y simulando el comportamiento que tendrán los usuarios reales una vez que el sistema esté en producción. Los límites de funcionamiento de la plataforma quedarán delimitados por la saturación de uno o varios elementos.

Durante la fase ejecución de las pruebas es indispensable tener controlado el consumo en los distintos elementos que componen la arquitectura de nuestro sistema. Su estudio, permitirá detectar el cuello de botella, encontrar la causa de los posibles fallos y optimizar las prestaciones de la aplicación.


2  Principales indicadores

  • Consumo de CPU
Indica el tiempo de procesador dedicado a la aplicación. En las arquitecturas unix y Windows este indicador se expresa en términos de porcentaje de uso (%), por lo que valores próximos a 100% indican una saturación de este recurso.

En aquellos servidores compartidos por varias aplicaciones será necesario “filtrar” por la aplicación que estamos probando para identificar el consumo asociado a nuestra aplicación.

  • Memoria:
La evolución de la memoria en los servidores permite detectar problemas asociados al agotamiento de los mismos. Los “memory leak” es el problema más común y está asociado a la no liberación de bloques de memoria después de su uso.

  • Disco:
Una excesiva utilización del sistema de disco puede penalizar el rendimiento. Los procesos de escritura y lectura son costosos en tiempo. Si la escritura está asociada a procesos de swap pueden deberse también a agotamientos de memoria.

  • Average Load/ Runnable Queue
Ambos indicadores muestran información del número de proceso o hilos que han sido bloqueados en un periodo de tiempo y que se encuentran a la espera de poder utilizar un recurso. Un Average Load alto no implica directamente un consumo de CPU elevado.

Un Average Load mayor a cuatro veces el número de procesadores disponible es un indicador de saturación en algún recurso.

  • Número de conexiones TCP:
El mantenimiento de conexiones abiertas puede indicar una mala gestión de las conexiones. El aumento continuo de las conexiones en estado TIME_WAIT o CLOSE_WAIT puede indicarnos que las conexiones no se están reutilizando adecuadamente.

  • Ancho de banda:
Generalmente el agotamiento en el ancho de banda no está asociado a problemas en la aplicación. Conviene revisar el ancho de banda disponible durante las pruebas y que puede ser utilizado ya que puede ser un factor limitante para la inyección de carga.

Elementos de red (routers, switches, hubs, etc… ) pueden limitar la capacidad para aceptar carga del sistema.


3  Herramientas de monitorización.

  • Monitor de rendimiento de Windows.
  • Comandos del Shell de UNIX:
Unix dispone de comandos específicos que proporcionan el estado de los distintos recursos. Algunos comandos son: sar, vmstat, netstat, ps, etc..

  • Herramientas Open Source: Existen diferentes herramientas Open Source que permiten integrar sistemas de monitorización:
  • Herramientas Comerciales: la mayoría de las herramientas de Performance Testing permiten integrar la monitorización del consumo de recursos conjuntamente con la prueba. Productos como LoadRunner de HP, SilkPerformer de Borland, o IBM Rational Performance Tester disponen de herramientas que permiten la monitorización On Line de los recursos de manera integrada con los resultados de nuestra prueba.

No hay comentarios:

Publicar un comentario