Prueba de carga ORACLE DB usando JMeter.

18

Transcript of Prueba de carga ORACLE DB usando JMeter.

Page 1: Prueba de carga ORACLE DB usando JMeter.
Page 2: Prueba de carga ORACLE DB usando JMeter.

Tabla de contenido

Prueba de carga básica a DB Oracle 11g con JMeter. ......................................................... 3

Introducción ...................................................................................................... 3

Objetivo: .......................................................................................................... 3

Entorno: ........................................................................................................... 3

Procedimiento: .................................................................................................. 3

1. Descargar, descomprimir y ejecutar JMeter. ....................................................... 3

2. Agregar driver odbc a JMeter. ......................................................................... 4

3. Crear grupo de hilos (Threads). ....................................................................... 4

4. Configurar el grupo de hilos. .......................................................................... 4

5. Configuración de conexión JDBC. ..................................................................... 5

6. Crear petición JDBC. .................................................................................... 6

7. Muestra de resultados. ................................................................................. 7

8. Guardar cambios ........................................................................................ 8

9. Ejecutar prueba. ........................................................................................ 8

10. Resultados: ........................................................................................... 10

Prueba de carga 2: .......................................................................................... 10

Utilidades externas ............................................................................................. 11

Monitoreo de recursos del servidor. ......................................................................... 14

Software utilizado ........................................................................................... 15

Referencias ................................................................................................... 15

Glosario ....................................................................................................... 15

ANEXOS ............................................................................................................. 16

Instalar y configurar ServerAgent JMeter. ................................................................. 16

Configuración Listener (Receptor) PerfMon Metrics Collector ........................................... 16

Instalación de JDK en linux. .................................................................................. 18

Page 3: Prueba de carga ORACLE DB usando JMeter.

Oracle DB JMeter| Moises Araya

[3]

Prueba de carga básica a DB Oracle 11g con JMeter.

Introducción

JMeter es una aplicación JAVA utilizada para realizar tests de carga, funcional y de rendimiento, es multiplataforma y se pueden testear ambientes WEB, FTP, SMTP, JDBC, SOAP, entre otros.

Objetivo:

Se realizará una prueba de carga básica sobre una Base de Datos Oracle 11g R2 y posteriormente se realizara un análisis del comportamiento del servidor y sus resultados, también se mostraran algunos plugins que permiten la mejora de la lectura de datos. La prueba consta de una simulación de conexiones concurrentes que realizaran una consulta a la DB. # Se asume el conocimiento previo de la herramienta JMeter.

Entorno:

DB Oracle 11 g R2 sobre CentOS 6.4 64 Bits Virtualizado en VMWare

Características: 30 GB HDD/2GB.

JMeter ejecutándose en Windows 7.

Plugins JMeter para la muestra de datos y gráficos avanzados.

Procedimiento:

1. Descargar, descomprimir y ejecutar JMeter.

Vista de la interfaz de JMeter.

Page 4: Prueba de carga ORACLE DB usando JMeter.

Oracle DB JMeter| Moises Araya

[4]

2. Agregar driver odbc a JMeter.

Descargar y copiar jar a carpeta lib de jmeter, luego clic en navegar y agregar el jar copiado.

3. Crear grupo de hilos (Threads).

El grupo de hilos actúa como si fuera un usuario y permite controlar:

El número de hilos concurrentes que acceden a la base de datos.

La frecuencia de los accesos.

El número de solicitudes (tanto por cada hilo como el volumen total).

Clic derecho sobre plan de pruebas – Añadir – Hilos – Grupo de Hilos.

4. Configurar el grupo de hilos.

Nombre: TestOracle

Comentario: Prueba contra Oracle DB. Acción a tomar después de un error de muestreador: Por defecto que es Continuar.

Propiedades de hilo:

o Numero de hilos (usuarios): número de sesiones concurrentes. o Periodo de subida (en segundos): cada cuanto tiempo un usuario ejecuta el escenario. o Contador de bucle: Numero de repeticiones a realizar.

Page 5: Prueba de carga ORACLE DB usando JMeter.

Oracle DB JMeter| Moises Araya

[5]

El periodo de subida se calcula así:

Periodo de carga = periodo de subida/número de hilos Un ejemplo seria así: un usuario ejecuta la consulta cada 0.3 segundos hasta llegar a los 300 usuarios:

Periodo de subida = periodo de carga (0.3) * número de hilos (300) = 90 segundos

5. Configuración de conexión JDBC.

Para crear una conexión JDBC, clic derecho sobre el grupo de hilos – añadir - elemento de configuración y configuración de la conexión JBDC.

Configuración:

Nombre: Describe la conexión JDBC.

Comentario: Ej la instancia o tabla a manipular.

Nombre de la variable enlazado al Pool: Identifica la conexión.

Configuración de la conexión a la base de datos:

o URL de la base de datos: jdbc:oracle:thin:@192.168.196.137:1521:ORCL o Clase del driver JDBC: oracle.jdbc.OracleDriver o Usuario: Usuario o Password: Contraseña

Page 6: Prueba de carga ORACLE DB usando JMeter.

Oracle DB JMeter| Moises Araya

[6]

# El resto de los valores queda por defecto.

6. Crear petición JDBC.

Acá se configuran las sentencias o consultas SQL a ejecutar en la DB. Para crear una petición JDBC: Clic derecho sobre el grupo de hilos – Añadir – muestreador y petición JDBC.

Page 7: Prueba de carga ORACLE DB usando JMeter.

Oracle DB JMeter| Moises Araya

[7]

Configuración:

Nombre: Peticion JDBC

Query SQL: Consulta a ejecutar.

# La prueba a ejecutar será un select de una tabla previamente creada.

7. Muestra de resultados.

Para poder visualizar/capturar e interpretar los datos, se necesitan los receptores o listeners. Algunos de ellos son:

Informe Agregado: entrega información acerca de las estadísticas de la prueba de carga, tiempos de

carca, errores de solicitudes, valores máximos, mínimo, cantidad de Kb/s procesados por el segundo, entre otros.

Gráfico de Resultados: muestra un gráfico con los tiempos de respuesta medios, desviación, mediana y el rendimiento de las pruebas.

Ver Árbol de Resultados: entrega el resultado de cada una de las solicitudes.

Ver Resultados en Árbol: muestra un árbol con todas las respuestas, indicando muestras, tiempo de respuestas y bytes transmitidos.

Visualizador Spline: muestra un gráfico de tiempo de respuesta en spline, indica el máximo, mínimo y la media.

Para agregar un receptor clic derecho sobre el grupo de hilos – añadir – receptor.

Page 8: Prueba de carga ORACLE DB usando JMeter.

Oracle DB JMeter| Moises Araya

[8]

Listeners agregados:

Cada listener agregado tiene la opción de guardar los datos capturados en un archivo .csv o .jtl para su análisis posterior.

8. Guardar cambios

Archivo – guardar plan de pruebas como.

9. Ejecutar prueba.

Presionar sobre icono play verde para ver los resultados.

Resultados de listeners agregados:

a) Informe agregado: No muestra errores.

Page 9: Prueba de carga ORACLE DB usando JMeter.

Oracle DB JMeter| Moises Araya

[9]

b) Visualizador Spline:

c) Árbol de resultados:

d) Resultados en árbol:

Page 10: Prueba de carga ORACLE DB usando JMeter.

Oracle DB JMeter| Moises Araya

[10]

10. Resultados:

Los tiempos de respuesta son buenos, se resuelven todas las solicitudes, no existen errores, la carga del servidor es alta en tres etapas y después va disminuyendo, como resultado se puede decir que este nivel de carga es muy bajo.

Prueba de carga 2:

Un usuario ejecuta la consulta cada 0. 04 segundos hasta llegar a los 1500 usuarios:

Periodo de subida = periodo de carga (0.04) * número de hilos (1500) = 60 segundos (duración de la prueba de carga.

Resultados:

Se visualiza un aumento en los tiempos de respuesta y en el rendimiento, esto es debido a que tiene que cursar una mayor cantidad de solitudes en un menor tiempo, aun así se resuelven la totalidad de las solicitudes. Como conclusión, se determina que este nivel de carga puede ser ejecutado correctamente por el servidor.

Page 11: Prueba de carga ORACLE DB usando JMeter.

Oracle DB JMeter| Moises Araya

[11]

Utilidades externas

JMeter presenta dos principales problemas a la hora de mirar los informes generados por los listeners por defecto: no son fácilmente comprensibles y no son configurables, esto hace un tanto complejo el análisis de resultados los cuales deben ser entendibles, deben permitir la correlación, deben ser configurables (flexibles) y rápidos de obtener, todo esto con el fin de minimizar los tiempos de análisis y generación de documentos. A continuación se presentan algunos plugins disponibles para JMeter que tienen como finalidad la entrega de otros datos tales como:

Bytes Throughput Over Time

Active Threads Over Time

Transactions per Second

Transaction Throughput vs Threads Para obtener estos plugins, se deben descargar de http://jmeter-plugins.org/ y luego descomprimir en la carpeta /lib/ext de del directorio jmeter. # El set de plugins utilizados fue el Estandar. Para agregar uno de estos se debe de proceder de la misma manera que para los otros listeners o receptores:

A continuación se muestra una comparación de los gráficos obtenidos de las dos pruebas realizadas:

Bytes Throughput Over Time

Prueba 1

Page 12: Prueba de carga ORACLE DB usando JMeter.

Oracle DB JMeter| Moises Araya

[12]

Prueba 2

Active Threads Over Time

Prueba 1

Prueba 2

Page 13: Prueba de carga ORACLE DB usando JMeter.

Oracle DB JMeter| Moises Araya

[13]

Transactions per Second

Prueba 1

Prueba 2

Transaction Throughput vs Threads

Prueba 1

Page 14: Prueba de carga ORACLE DB usando JMeter.

Oracle DB JMeter| Moises Araya

[14]

Prueba 2

Monitoreo de recursos del servidor.

Existe otro plugin que muestra el consumo de los recursos del servidor, para visualizar los datos se deben realizar una serie de configuraciones que se muestran en el apartado anexos

Consumo de recursos del servidor durante la prueba 1

Page 15: Prueba de carga ORACLE DB usando JMeter.

Oracle DB JMeter| Moises Araya

[15]

Como último y de manera opcional, podemos utilizar los comandos que nos provee Linux para saber el estado de nuestro servidor:

free

top

vmstat

lsof

netstat

Iotop

Iostat

uptime

Software utilizado

JMeter: http://bit.ly/1jYtoQc

JMeter Plugins: http://bit.ly/1d5enpL OJDBC: http://bit.ly/M6yYE7

ServerAgent: http://bit.ly/19XPEJ4

Referencias

Valores por defecto para drivers JDBC http://gerardnico.com/wiki/language/java/jdbc_url

Glosario

CORRELACION: Correspondencia recíproca entre dos o más cosas, personas, ideas, etc. PRUEBA DE CARGA: Simulación el comportamiento de una aplicación cuando se ve sometido a una alta concurrencia de usuarios. SPLINE: termino matemático, es una curva definida en porciones mediante polinomios, utilizada para aproximar formas complicadas y para graficar formas 2d,3d o más dimensiones.

Page 16: Prueba de carga ORACLE DB usando JMeter.

Oracle DB JMeter| Moises Araya

[16]

ANEXOS

Instalar y configurar ServerAgent JMeter.

Esta opción es útil para el monitoreo de recursos del servidor, tales como; CPU, Memory, Swap, Disks I/O, Network I/O, TCP, JMX, Exec y Tail.

Descargar desde http://code.google.com/p/jmeter-plugins/downloads/detail?name=ServerAgent-2.2.1.zip&can=2&q

Descomprimir archivo en alguna carpeta y ejecutar según se muestra.

[oracle@dboracle]$ [oracle@dboracle]$ cd /home/oracle/jmeter/ [oracle@dboracle]$ unzip ServerAgent-2.2.1.zip [root@dboracle jmeter]# ls CMDRunner.jar lib LICENSE ServerAgent-2.2.1.zip ServerAgent.jar startAgent.bat startAgent.sh [root@dboracle jmeter]# ./startAgent.sh –sysinfo Extracto: INFO 2014-01-21 15:49:18.419 [kg.apc.p] (): *** Logging available processes *** INFO 2014-01-21 15:49:18.465 [kg.apc.p] (): Process: pid=1 name=init args=/sbin/init INFO 2014-01-21 15:49:18.494 [kg.apc.p] (): Process: pid=464 name=udevd args=/sbin/udevd -d INFO 2014-01-21 15:49:18.670 [kg.apc.p] (): *** Done logging sysinfo *** INFO 2014-01-21 15:49:18.670 [kg.apc.p] (): Binding UDP to 4444 INFO 2014-01-21 15:49:19.678 [kg.apc.p] (): Binding TCP to 4444 INFO 2014-01-21 15:49:19.723 [kg.apc.p] (): JP@GC Agent v2.2.0 started

Referencia: http://jmeter-plugins.org/wiki/PerfMonAgent/

Configuración Listener (Receptor) PerfMon Metrics Collector

Este listener está disponible de la misma que los otros ya descritos.

Para agregar los monitores, clic sobre Add Row y seleccionar el parámetro a medir.

Page 17: Prueba de carga ORACLE DB usando JMeter.

Oracle DB JMeter| Moises Araya

[17]

Cada parámetro a medir puede ser personalizado: Ej. Network I/O

Y como el resto de los receptores (Listeners), es posible guardar los datos en un archivo.

También es posible configurar las características del gráfico.

Page 18: Prueba de carga ORACLE DB usando JMeter.

Oracle DB JMeter| Moises Araya

[18]

Instalación de JDK en linux.

Descargar JDK http://www.oracle.com/technetwork/java/javase/downloads/index.html

Copiar archivo a servidor, en este caso el archivo descargado es un *.bin

Ejecutar según se muestra:

[root@ dboracle home]# ./jdk-6u45-linux-x64-rpm.bin Unpacking... Checksumming... Extracting... UnZipSFX 5.50 of 17 February 2002, by Info-ZIP ([email protected]). inflating: jdk-6u45-linux-amd64.rpm inflating: sun-javadb-common-10.6.2-1.1.i386.rpm inflating: sun-javadb-core-10.6.2-1.1.i386.rpm inflating: sun-javadb-client-10.6.2-1.1.i386.rpm inflating: sun-javadb-demo-10.6.2-1.1.i386.rpm inflating: sun-javadb-docs-10.6.2-1.1.i386.rpm inflating: sun-javadb-javadoc-10.6.2-1.1.i386.rpm Preparando... ########################################### [100%] 1:jdk ########################################### [100%] Unpacking JAR files... rt.jar... jsse.jar... charsets.jar... tools.jar... localedata.jar... plugin.jar... javaws.jar... deploy.jar... Installing JavaDB Preparando... ########################################### [100%] 1:sun-javadb-common ########################################### [ 17%] 2:sun-javadb-core ########################################### [ 33%] 3:sun-javadb-client ########################################### [ 50%] 4:sun-javadb-demo ########################################### [ 67%] 5:sun-javadb-docs ########################################### [ 83%] 6:sun-javadb-javadoc ########################################### [100%]

Verificar version y ruta de binarios. [root@dboracle home]# java -version java version "1.6.0_45" Java(TM) SE Runtime Environment (build 1.6.0_45-b06) Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode) [root@dboracle home]# which java /usr/bin/java