martes, 12 de abril de 2016

Práctica 4: Comprobar el rendimiento de servidores web

En esta práctica vamos a usar varias herramientas para crear cargas HTTP sobre el sistema web. Hay sistemas en los que se usan herramientas como SPECweb o WebStone para simular un número determinado de clientes accediendo al sistema. En cualquier caso, las pruebas deben hacerse simulando accesos simultáneos de un gran número de usuarios, para lo cual, usaremos herramientas de generación del tráfico.

Existen herramientas para comprobar el rendimiento de servidores web basadas en interfaz de línea de comandos y también basadas en interfaz gráfica. Lo habitual es usar programas de línea de comandos que sobrecarguen lo mínimo posible las máquinas que estamos usando (tanto la que genera el tráfico como las del sistema servidor). Además, es importante usar siempre la misma máquina para generar el tráfico, y lo más importante, que esa máquina sea totalmente independiente de las que forman la granja web.

Entre las herramientas más utilizadas para generar tráfico HTTP destacan:
  • Apache Benchmark
  • Siege
  • The Grinder
  • OpenSTA
  • JMeter
  • httperf
  • OpenWebLoad

Todas ellas nos permiten comprobar el rendimiento del servidor web, ya sea del hardware o software, o de alguna modificación/configuración que hayamos hecho.


En esta práctica proponemos usar las siguientes herramientas para comprobar el rendimiento de nuestra granja web recién configurada (aunque se pueden usar otras herramientas que encontremos):

La idea de esta práctica es usar varias herramientas para comparar los resultados de rendimiento de tres configuraciones: (1) máquina sola, (2) granja con nginx, (3) granja con haproxy.

Se recomienda crear una cuarta máquina virtual o bien usar un terminal en nuestro ordenador anfitrión y desde ahí lanzar las herramientas para generar el tráfico. Es importante que la carga computacional y de red que supone la batería de peticiones no recaiga sobre ninguna de las máquinas que forman la granja web, tal y como se indica en el siguiente esquema:



Herramienta 1: Apache Benchmark

Apache Benchmark (ab) es una utilidad que se instala junto con el servidor Apache y permite comprobar el rendimiento de cualquier servidor web, por sencillo o complejo que sea. Con esta herramienta podemos analizar el rendimiento de servidores Apache, Internet Information Services (IIS), nginx, etc.

Para ejecutarla, entramos en un terminal en la máquina cliente y ejecutamos el comando:

ab -n 1000 -c 10 http://ipmaquina/test.html

Los parámetros indicados en la orden anterior le indican al benchmark que solicite la página con dirección http://ipmaquina/test.html 1000 veces (-n 1000 indica el número de peticiones) y hacer esas peticiones concurrentemente de 10 en 10 (-c 10 indica el nivel de concurrencia). Esos parámetros generan una carga muy baja; para hacer la práctica probablemente tengamos que usar valores mucho mayores en ambos casos.

ab no simula con total fidelidad el uso del sitio web que pueden hacer los usuarios habitualmente (en realidad, ninguna herramienta lo hará). Pide el mismo recurso (misma página) repetidamente. Sin embargo, va bien para testear cómo se comporta el servidor antes y después de modificar cierta configuración.

Con esta herramienta, de todas las medidas que nos ofrece, vamos a recoger: "Time taken for tests", "Failed requests", "Requests per second" y "Time per request".


Herramienta 2: Siege

Siege es una herramienta de generación de carga HTTP para benchmarking. Se trata de una utilidad de línea de comandos, similar en interfaz al Apache Benchmark, aunque las opciones de ejecución son ligeramente diferentes. Por ejemplo, permite realizar las baterías de tests contra varias URLs diferentes del mismo servidor, en lugar de usar la misma URL siempre.

Debemos usar la opción -b para ejecutar los tests sin pausas, con lo que comprobaremos el rendimiento general. Además, podemos indicar el tiempo exacto que queremos ejecutar Siege con la opción -t siguiendo el siguiente formato:
  -t60S (60 segundos)
  -t1H (1 hora)
  -t120M (120 minutos)

Como ejemplo, ejecutaremos la herramienta con el siguiente comando:

siege  -b -t60S -v http://ipmaquina

Lo que usará 15 usuarios concurrentes (el valor por defecto) y estará en ejecución durante 60 segundos.

Con esta herramienta, de todas las medidas que nos ofrece, vamos a recoger: "Availability", "Elapsed time", "Response time" y "Transaction rate".


Metodología: ¿Cómo realizar los tests con las herramientas?

Para realizar los tests debemos generar el tráfico ejecutando la herramienta correspondiente en la cuarta máquina (externa a la granja web), haciendo las baterías de ejecuciones a las siguientes configuraciones:
  • una carga concreta a la IP de un servidor solo (puede ser la máquina final M1 o la M2)
  • la misma carga a la IP del balanceador teniendo como software de balanceo el nginx
  • la misma carga a la IP del balanceador teniendo como software de balanceo el haproxy
  • Haremos un mínimo de 5 ejecuciones con ese nivel de carga y con cada configuración, y recogeremos los datos en una hoja de cálculo. Luego calculamos una tabla con medias y desviación estándar para cada uno de los tres casos, y representamos gráficamente estos valores de forma que podamos analizar y comparar adecuadamente los resultados obtenidos, ofreciendo unas conclusiones acerca de lo observado.


Nota 1: Las métricas obtenidas con las herramientas son muy diferentes entre sí, por lo que no debemos comparar lo obtenido con con las herramientas utilizadas. La idea es comparar los resultados de rendimiento entre las tres configuraciones (máquina sola, granja con nginx, granja con haproxy) con cada herramienta. Recordad que vamos a comparar configuraciones, y no herramientas.

Nota 2: Hemos propuesto dos posibles herramientas de las muchas que existen. Para subir la nota de la Práctica 4, buscad otra diferente y utilizadla siguiendo las indicaciones anteriores.

No hay comentarios:

Publicar un comentario