Pruebas de Estrés y Ajuste de Rendimiento Apache Cassandra

Pruebas de Estrés y Ajuste de Rendimiento Apache Cassandra

  • ITOps y DevOps
6 min de lectura Actualizado Dec 20, 2018

Puntos clave: Las pruebas de estrés y la optimización del rendimiento para Apache Cassandra implican generar datos y ejecutar consultas para analizar métricas de rendimiento. Los pasos clave incluyen la creación de un espacio de llaves, la configuración de pruebas de estrés en YAML y la ejecución de comandos para evaluar el rendimiento.

  • Se proporcionan instrucciones para crear un espacio de llaves y una tabla de Cassandra son.
  • Se está esbozado un archivo de configuración YAML para pruebas de estrés.

Aquí mostramos cómo hacer una prueba de estrés en un cúmulo de Cassandra usando la herramienta de estrés de Cassandra .

Lo que hace esta herramienta están ejecutar insertos y consultas contra una tabla que genera por sí misma o una o varias tablas existentes.

El flujo básico

La prueba funciona así:

  • Insertar datos aleatorios. te especificar la longitud de los campos de texto o valores numéricos aleatorios seleccionando un valor fijo o una distribución estadística como una normal, uniforme u otra. La distribución normal son valores extraídos de alguna media y desviación estándar, es decir, la conocida curva de campana. La distribución uniforme están números aleatorios extraídos de un rango como 1, 2 y 3,....
  • Ejecuta sentencias select usando los valores generados.
  • Calcula el tiempo en milisegundos para ejecutar cada operación.
  • Calcula el tiempo medio, las desviaciones estándar, el número de recogidas de basura, etc., para cada iteración. Esto te da una media y la curva de campana para te que puedas Ve qué tan ampliamente se distribuyen tus oper son aciones. Da te gráficos a lo largo del tiempo para te Ve si el rendimiento se degrada con el tiempo. Muchas operaciones alejadas de la media indican un alto nivel de varianza. Esto podría indicar elementos te necesitas ajustar, como índices, particiones, añadir más memoria, etc.

Configuración de pruebas

te necesito un racimo de Cassandra. Si aún no te tienes uno, sigue estas instrucciones.

Necesitamos Crea un espacio de llaves, una tabla y un índice, y Crea un archivo de configuración para pruebas de estrés en formato YAML.

Ahora desactiva el entorno virtual de Python 2.7, si te son usándolo, ejecuta cqlsh. Pega el siguiente Cassandra SQL.

    CREATE KEYSPACE Library
WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 3 };

CREATE TABLE Library.book (
ISBN text,
copy int,
title text,
PRIMARY KEY (ISBN, copy)
);

create index on library.book (title);

Ahora, Crea un archivo de texto llamado stress-books.yaml y pega lo siguiente en él. Este están un formato YAML, así que no estropees la sangría.

A continuación explicamos los campos.

    keyspace: library

table: book

columnspec:
  - name: text
    size: uniform(5..10) 
    population: uniform(1..10) 
  - name: copy
    cluster: uniform(20..500) 
  - name: title
    size: uniform(5..10)

insert:
  partitions: fixed(1) 
  select: fixed(1)/500 
  batchtype: UNLOGGED         

queries:
   books:
      cql: select *  from book where title = ?
      fields: samerow

Los nombres de los campos son:

Espacio de claves Nombre del espacio de claves existente. te también podría poner SQL aquí para Crea uno si no existe.
Tabla Nombre de la tabla existente. te también podría poner SQL aquí para Crea uno si no existe.
insertar, consultas Estas son las funciones que llamaremos. El insert hace el insert y las consultas/libros hacen la consulta que pusimos ahí. Ejecuta consultas contra los valores insertados en el lote que acaba de ejecutar.
Especificación de columna: - Nombre: texto Talla: Uniforme(5..10) Hay están una especificación de columna para cada valor que queremos llenar. El tamaño están la longitud del campo. uniforme(5..10) significa generar una cadena de texto de 5 a 10 caracteres. Si fuera un campo numérico, Crea números aleatorios en ese rango.
Insertar: Particiones: fijas(1) select: fixed(1)/500 tipo de lote: UNLOG Esto significa insertar un número fijo de filas en cada partición de cada lote. Aquí explicamos las operaciones por lotes.

Haz la prueba de estrés

Ejecuta el comando de abajo para Comienza la prueba. Los argumentos son:

    cassandra-stress user profile=stress-books.yaml ops\(insert=1,books=1\) n=10000  -graph file=stress.html
Perfil de usuario=stress-books.yaml Significa utilizar stress-books.yaml para las instrucciones.
n=10000 ops\(insertar=1,libros=1\) Aquí decimos que ejecutamos 10.000 lotes y para cada uno ejecutemos el código insertado 1 vez y el código del libro 1 vez. Si te dejamos esto desactivado, funcionará hasta que la desviación estándar del error están < 0,2.
-Gráfico file=stress.html Esto Crea un archivo html llamado stress.html que mostrará graficamente los resultados de diferentes métricas.

La salida está bastante larga. Aquí está parte de ella truncada.

    ******************** Stress Settings ********************
Command:
Type: user
Count: 10,000


…

Connected to cluster: Walker Cluster, max pending requests per connection 128, max connections per host 8
Datatacenter: datacenter1; Host: localhost/127.0.0.1; Rack: rack1
Generating batches with [1..1] partitions and [0..1] rows (of [20..500] total rows in the partitions)

Sleeping 2s...
Warming up insert with 500 iterations...
Warming up books with 500 iterations...
Thread count was not specified

Reflejará métricas en cada iteración por lote. te copiar y pegar esta prueba y luego importarla a Excel o Google Sheets para Haz más fácil de leer.

    type       total ops,    op/s,    pk/s,   row/s,    mean,     med,     .95,     .99,    .999,     max,   time,   stderr, errors,  gc: #,  max ms,  sum ms,  sdv ms,      mb
books,          1003,    1003,     383,     387,     5.0,     3.9,    12.5,    20.2,    29.7,    40.7,    1.0,  0.00000,      0,      2,      10,      18,       1,     319
insert,          825,     825,     825,     934,     2.7,     2.0,     7.3,    12.1,    16.9,    23.8,    1.0,  0.00000,      0,      2,      10,      18,       1,     319
total,          1828,    1828,    1208,    1321,     4.0,     2.9,    11.1,    18.1,    27.2,    40.7,    1.0,  0.00000,      0,      2,      10,      18,       1,     319
books,          1096,     930,     350,     360,     5.8,     3.9,    14.1,    27.4,    33.3,    33.3,    1.1,  0.11339,      0,      0,       0,       0,       0,       0
insert,          904,     790,     790,     910,     3.0,     2.3,     9.0,    12.1,    12.3,    12.3,    1.1,  0.11339,      0,      0,       0,       0,       0,       0
total,          2000,    1720,    1140,    1270,     4.5,     3.2,    11.9,    21.9,    33.3,    33.3,    1.1,  0.11339,      0,      0,       0,       0,       0,       0

Haz eso y entonces la hoja de cálculo están más fáciles de leer.

Esto muestra el número total de insertos y selecciones (están como llamamos libros) y el número medio (medio) de milisegundos requeridos para hacerlo. En este ejemplo que ejecuté antes, se ejecutó 2.000 veces.

Un estadístico que analize esto querrá conocer 2, 3 y 4 desviaciones estándar de la media. Eso corresponde al 95%, 99% y 99,9% de las transacciones. En otras palabras, son lejos de la media.

Abajo están el lado derecho de la hoja de cálculo. No todas las métricas caben en esta pantalla, como el número de recogidas de basura (el número de veces que la Máquina Virtual Java tuvo que vaciar su caché). Cuando lo hace, todas las operaciones se pausan.) Pero esto no importa, ya que el archivo HTML dará la imagen completa.

Abre el archivo stress.html con un navegador.

Tú Ve que la prueba duró 22 segundos en mis dos máquinas Amazon Ubuntu t2.large. Los picos de tiempo de funcionamiento coincidieron con recogidas de basura. Te Ve eso seleccionando la opción gc# en el desplegable de tipo de gráfico.

Las estadísticas muestran que la media fue de 2.231 insertos por segundo en todo el sistema.

te puede elegir en el desplegable en la parte superior derecha del gráfico para representar diferentes métricas.

 

Estas publicaciones son mías y no representan necesariamente la posición, estrategias u opinión de BMC.

Más de ITOps y DevOps

¿Te interesa saber más de BMC?

El Brief están nuestro correo mensual sobre el mainframe y la orquestación empresarial: investigación, historias de clientes, noticias de productos, eventos.

Al registrarse para esta oferta te son confirmar que te leído y aceptado la Política de Privacidad de BMC.

Tú te has suscrito a The Brief

El Brief abarca la orquestación de mainframe y empresa—BMC AMI y Control-M—y la investigación de analistas, despliegues de clientes y eventos en ambas áreas.