Skip to main content

Volver al Índice | Anterior: Contained database (Base de datos autocontenida) | Siguiente: Actualizaciones del producto durante la instalación

Descubriendo SQL 2012 – Distributed Replay

Autora: Raquel Vicente de la Rosa

La recomendación en cualquier planificación de capacidad a la hora de asegurar un buen rendimiento es simular pruebas de carga. Igualmente, a la hora de cualquier migración entre versiones, siempre se debe probar o simular la aplicación. Pero ¿Qué herramientas tenemos para hacerlo?

Hasta esta versión, si queríamos crear carga sobre SQL, podíamos utilizar el modo “Replay” del profiler. Por supuesto, también es posible crear carga en la aplicación y comprobar los efectos en la base de datos, con herramientas como Microsoft Test Manager ( http://msdn.microsoft.com/en-us/library/bb385901.aspx)

Pero a partir de SQL 2012 tenemos una herramienta más: Distributed Replay. Veamos como funciona; para empezar tenemos que configurar la siguiente topología:

  1. Tendremos una consola de administración que puede abrirse en el mismo equipo o en otra máquina que el controlador
  2. El controlador se conecta a los distintos clientes para coordinarlos
  3. Los clientes abrirán conexiones al servidor que queremos probar.

Para montar esta topología tendremos que instalar:

  • En el controlador el componente “Distributed replay controller” desde el DVD/carpeta de instalación de SQL 2012, que creará el siguiente servicio:
  • En los clientes, el componente “Distributed replay client” también desde el DVD/carpeta de instalación de SQL 2012, y creará el siguiente servicio:
  • La consola de administración es un archivo llamado dreplay.exe, que encontraremos en la carpeta C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn del controlador. Este archivo podemos copiarlo a cualquier máquina con conectividad con el controlador.  Esta consola tiene forma de línea de comandos.
  • En el servidor que vamos a testear no necesitamos realizar ninguna instalación, porque simplemente recibe conexiones y peticiones desde máquinas clientes.

Es importante que creemos las reglas adecuadas en los firewalls de cada una de las máquinas para que el controlador pueda conectarse con cada uno de los clientes, y viceversa.

Una vez que tenemos la topología preparada, necesitamos un archivo de carga. Normalmente, queremos simular cómo funcionaría una instancia de SQL con una carga específica, generada por una aplicación bien en pruebas o bien en producción, pero conectada a otra instancia. El primer paso es capturar una traza de profiler en modo “Replay” de dicha aplicación. Estas trazas pueden ser capturadas utilizando la versión 2012 de profiler, o incluso la versión 2008. Simplemente, abrimos una nueva traza y seleccionamos la plantilla “TSQL_Replay”:

Una vez capturada esta traza, ya tenemos toda la preparación necesaria. A continuación preprocesaremos esta traza, ejecutando el siguiente comando en la consola:

dreplay preprocess -m <nombre_controlador> -i <ruta_y_archivo_de_traza>.trc -d "C:\Program Files (x86)\Microsoft SQL Server\110\Tools"

El  último parámetro indica dónde se guardarán los archivos resultantes del preprocesamiento, y podemos indicar el que más nos interese. En este caso vamos a utilizar el mismo donde se encuentra la consola.

El resultado de ejecutar este comando es un archivo xml, que utilizaremos en pasos posteriores. Y finalmente, podemos pasar a realizar la carga, para ello ejecutamos:

dreplay replay -m <nombre_contorlador> -o -w <nombre_cliente1>, <nombre_cliente_2>,…<nombre_cliente_n> -d "C:\Program Files (x86)\Microsoft SQL Server\110\Tools" -s <nombre_instancia_sql>

Igualmente, en este caso, el parámetro –d puede cambiarse, indica dónde está almacenado el archivo xml que habíamos creado en el paso previo.

En este momento, se empiezan a enviar las queries especificadas en el archivo de traza que habíamos capturado previamente desde los clientes que hayamos especificado.  Podemos configurar que las conexiones entre los distintos clientes se sincronicen o no, dependiendo de si nuestro objetivo es comprobar la compatibilidad de una aplicación (modo síncrono) o una prueba de carga (modo stress).

Estos modos se pueden configurar modificando el archivo DReplay.exe.replay.config que se encuentra en la misma carpeta donde se encuentra el ejecutable del servicio controlador.

En particular, esta configuración se modificaría añadiendo el siguiente código al archivo:

< ReplayOptions > 

<
SequencingMode >

synchronization

</ SequencingMode >

<
/ ReplayOptions >

Para tener una lista complete de las distintas opciones de configuración se puede consultar: http://msdn.microsoft.com/en-us/library/ff878359.aspx

¿Qué resultados obtenemos al realizar estas pruebas y cómo podemos analizarlos? El primer resultado es precisamente el rendimiento obtenido para esta carga. Podemos evaluar el rendimiento monitorizando el servidor destino tal y como haríamos con cualquier otro tipo de carga: revisando contadores de rendimiento, y la duración de las queries ejecutadas. La duración de estas queries podemos evaluarla utilizando eventos extendidos ( http://msdn.microsoft.com/es-es/library/bb630354.aspx) o de nuevo SQL profiler. Es recomendable utilizar eventos extendidos porque producen menos impacto en la instancia de SQL y por lo tanto las mediciones son más realistas.

También podemos analizar las trazas que se crean por defecto en la carpeta \DreplayClient\ResultDir en la ruta donde se ha instalado el servicio cliente. Adicionalmente, se genera un archivo de log en \DreplayClient\Log que nos indica el tiempo y el número de eventos despachados así como cualquier error durante la ejecución.

Microsoft está realizando una encuesta en línea para comprender su opinión del sitio web de. Si decide participar, se le presentará la encuesta en línea cuando abandone el sitio web de.

¿Desea participar?