sql >> Base de Datos >  >> NoSQL >> Redis

Las 6 principales herramientas gratuitas de análisis de memoria de Redis

Cuando se trata de analizar el uso de la memoria de una instancia de Redis, existen muchas herramientas gratuitas y de código abierto en el mercado, junto con algunos productos pagos. Algunos de los más populares son Jacks (de todos los oficios famosos), pero si está buscando un análisis más profundo de sus problemas de memoria, es posible que esté mejor con una de las herramientas más específicas y menos conocidas.

En esta publicación, compilamos una lista de las 6 herramientas gratuitas principales que consideramos más útiles para analizar el uso de memoria de nuestras instancias de Redis:

  1. Analizador de memoria Redis (RMA)
  2. Muestra de Redis
  3. Herramientas RDB
  4. Redis-Auditoria
  5. Kit de herramientas de Redis
  6. Cosecha

1) Analizador de memoria Redis

Redis Memory Analyzer (RMA) es uno de los analizadores de memoria FOSS más completos disponibles para Redis. Admite tres niveles diferentes de detalles:

  • Global – Descripción general de la información de uso de la memoria.
  • Escáner – Información de uso de memoria de nivel de espacio de claves/prefijo de nivel más alto; en otras palabras, se usa el prefijo común más corto.
  • RAM – Espacio de teclas/prefijo de nivel más bajo:en otras palabras, se usa el prefijo común más largo.

Cada modo tiene sus propios usos; puede obtener más detalles en el Léame de RMA.

RMA:modo global

En el modo global, RMA proporciona algunas estadísticas de alto nivel, como la cantidad de claves, la memoria del sistema, el tamaño del conjunto residente, el tamaño del espacio de claves, etc. Una característica única es la “ sobrecarga del espacio de claves”, que es la memoria utilizada por el sistema Redis para almacenar información relacionada con el espacio de claves, como punteros para las estructuras de datos de la lista.

RMA:modo de escáner

En el modo de escáner, obtenemos una descripción general de nuestro espacio de teclas. Proporciona los espacios de nombres de alto nivel (por lo que a:b:1 y a:c:1 se agrupan como a:*), junto con los tipos de sus elementos y el porcentaje de memoria consumida por ese espacio de nombres. Es útil comenzar con esta información y luego usar el comportamiento de "RAM" junto con el patrón de espacio de nombres para realizar un análisis detallado.

RMA – Modo RAM

En el modo RAM, obtenemos el consumo de memoria a nivel de espacio de claves, como lo proporciona la mayoría de los otros analizadores de memoria FOSS. Así que aquí, a:b:1 y a:c:1 se toman por separado como a:b:* y a:c:* y obtenemos información detallada sobre la memoria utilizada, el tamaño real de los datos, la sobrecarga, la codificación, el TTL mínimo y máximo. , etc. Esto ayuda a identificar los mayores acaparadores de memoria en nuestro sistema.

Desafortunadamente, esta herramienta no siempre se actualiza (la última confirmación en GitHub fue hace más de un año). Aun así, este es uno de los mejores que encontramos para un análisis detallado.

Instalación y uso de RMA:

RMA requiere que Python y PIP estén instalados en el sistema (ambos están disponibles para todos los sistemas operativos principales). Una vez que están instalados, puede ejecutar un solo comando para instalar las herramientas RDB:`pip install rma`

Es bastante simple de usar desde la línea de comandos. La sintaxis es `rma [-s HOST] [-p PUERTO] [-a CONTRASEÑA] [-d BD] [-m patrón-para-coincidir] [-l número-de-claves-para-escanear] [-b COMPORTAMIENTO] [-t lista-separada-por-comas-de-tipos-de-datos-para-escanear]`

Ventajas de RMA:

  • Funciona en tiempo real.
  • Utiliza el comando de escaneo para recorrer la base de datos, por lo tanto, el impacto en el rendimiento es limitado y el análisis es muy preciso.
  • Bien documentado:es fácil encontrar ejemplos de uso.
  • Admite opciones sólidas de personalización y filtrado, incluido el análisis de tipos de datos específicos solamente o la consideración de claves que coincidan con un patrón específico).
  • Puede proporcionar detalles en diferentes niveles:espacios de nombres, claves o valores globales.
  • Única entre todas las herramientas que auditamos porque muestra la sobrecarga de la estructura de datos (es decir, cuánta memoria se usa para almacenar información interna de Redis, como los punteros para un tipo de datos de lista ).

Contras de RMA:

  • No es compatible con el muestreo probabilístico. El escaneo lineal de la base de datos puede ser muy lento para bases de datos grandes; existe la opción de detener la exploración una vez que se devuelve una determinada cantidad de claves para mejorar el rendimiento.
  • Hay muchos detalles en el resultado; si bien es útil para los expertos, podría servir solo para confundir a los novatos.

2) Muestra de Redis

Redis Sampler es una herramienta muy poderosa que puede brindar información detallada sobre el uso de la memoria de una instancia de Redis. Lo mantiene antirez, el desarrollador detrás de Redis, y ese profundo conocimiento de Redis se muestra en esta herramienta. La herramienta no se actualiza con mucha frecuencia, pero de todos modos no se informan muchos problemas.

Redis Sampler realiza un análisis probabilístico de la base de datos e informa la siguiente información:

  • La distribución porcentual de claves entre varios tipos de datos, basada en el número de claves, en lugar del tamaño de los objetos.
  • Las claves más grandes de tipo cadena, según strlen, y el porcentaje de memoria que consumen.
  • Para todos los demás tipos de datos, las claves más grandes se calculan y se muestran como dos listas separadas:una basada en el tamaño del objeto y otra basada en la cantidad de elementos en el objeto.
  • Para cada tipo de datos, también muestra una "distribución de potencia de 2". Esto es realmente útil para comprender la distribución de tamaño dentro de un tipo de datos. El resultado básicamente detalla qué porcentaje de claves de un tipo dado tienen un tamaño en el rango> 2^x y <=2^x+1.

Instalación y uso de muestras de Redis:

Este es un solo script de Ruby. Requiere que Ruby ya esté instalado. También necesita que se instalen las gemas `rubygems` y `redis`. El uso es bastante sencillo:desde la línea de comandos, ejecute `./redis-sampler.rb `

Ventajas de la muestra de Redis:

  • Muy fácil de usar, sin opciones para investigar y comprender.
  • El resultado es fácil de entender, incluso para principiantes, pero tiene suficiente información para análisis muy detallados de una instancia de Redis por parte de expertos. Las secciones están claramente delimitadas y son fáciles de filtrar.
  • Funciona en todas las versiones de Redis.
  • No utiliza ningún comando privilegiado como DEBUG OBJECT, por lo que se puede utilizar en cualquier sistema, incluido ElastiCache de Amazon.
  • Utiliza comandos de longitud específicos del tipo de datos para identificar el tamaño de los datos, por lo que el uso informado no se ve afectado por la serialización.
  • Funciona en datos en vivo. Aunque la recomendación es ejecutar en la interfaz de bucle invertido, es compatible con el muestreo de sistemas remotos.

Desventajas de la muestra de Redis:

  • Si el tamaño de la muestra se configura más alto que la cardinalidad de la base de datos, seguirá usando TECLAS ALEATORIAS en lugar de ESCANEAR.
  • No hay paquete ni imagen de Docker disponible. Tienes que instalar manualmente las dependencias (aunque en el lado positivo, solo hay 2 dependencias).
  • Informa el tamaño de los datos, que no coincide exactamente con el espacio ocupado en la RAM debido a los gastos generales de almacenamiento de la estructura de datos.
  • No funciona de inmediato si su instancia de Redis requiere autenticación. Debe modificar el script para tomar una contraseña; en su forma más simple, puede buscar:
    redis =Redis.new(:host => ARGV[0], :port => ARGV[1].to_i, :db => ARGV[2].to_i)
    y cámbielo a:
    redis =Redis.new(:host => ARGV[0], :port => ARGV[1].to_i, :db => ARGV[2].to_i, :contraseña => “agrega-tu-contraseña-aquí”)
Eche un vistazo a las 6 mejores herramientas gratuitas de análisis de memoria #RedisHaga clic para twittear

3) Herramientas RDB

RDB Tools es un conjunto de herramientas muy útil para cualquier administrador serio de Redis. Existe una herramienta para casi todos los casos de uso que se nos ocurran, pero en esta publicación nos concentraremos únicamente en la herramienta de análisis de memoria.
Si bien no es tan completo como RMA o Redis Sampler, RDB Tools brinda 3 información importante:

1) Todas las claves donde el valor tiene un tamaño (serializado) superior a B bytes [B especificado por usuario].

2) Las N claves más grandes [N especificadas por el usuario].

3) Tamaño de una clave en particular:se lee en vivo desde la base de datos.

Esta suite tiene muchos colaboradores activos en GitHub y se actualiza con bastante frecuencia. RDB Tools también está bien documentado en Internet. El mantenedor sripathikrishnan es bien conocido en la comunidad de Redis por las muchas herramientas que ha proporcionado a lo largo de los años.

Instalación y uso de herramientas RDB:

Herramientas RDB requiere que Python y PIP estén instalados en el sistema (ambos están disponibles para todos los sistemas operativos principales). Una vez que están instalados, puede ejecutar un solo comando para instalar las herramientas RDB:`pip install rdbtools python-lz`

El uso es bastante sencillo:

  • Para obtener las 200 claves más grandes:rdb -c memory /var/redis/6379/dump.rdb –largest 200 -f memory.csv
  • Para obtener todas las claves de más de 128 bytes:rdb -c memory /var/redis/6379/dump.rdb –bytes 128 -f memory.csv
  • Para obtener el tamaño de una clave:redis-memory-for-key -s localhost -p 6379 -a mypassword person:1

Herramientas profesionales de RDB:

  • Genera un archivo CSV, que se puede usar con otras herramientas FOSS para crear fácilmente visualizaciones de datos y también se puede importar a RDBMS-es para ejecutar análisis.
  • Muy bien documentado.
  • Admite opciones de personalización y filtrado, para que pueda obtener informes más útiles.

Desventajas de las herramientas RDB:

  • Su análisis no funciona con datos en vivo; debe realizar un volcado de RDB. Como resultado, el uso de la memoria informado es la memoria serializada, que no es exactamente igual a la memoria ocupada en la RAM.
  • No tiene ningún soporte integrado para agrupar, por lo que no puede encontrar los espacios de nombres más grandes.

4) Redis-Auditoría

Redis-Audit es una herramienta probabilística que es útil para obtener una descripción general rápida del uso de la memoria. Muestra información útil sobre grupos de claves, como el consumo total de memoria, el TTL máximo en el grupo, el tiempo promedio del último acceso, el porcentaje de claves en el grupo que expiran, etc. Esta es la herramienta perfecta si necesita encontrar la mayor cantidad de memoria. acaparando grupo clave en su aplicación.

Instalación y uso de Redis-Audit:

Debes tener Ruby y Bundle ya instalados. Una vez instalado, puede clonar el repositorio de Redis-Audit en una carpeta o descargar el zip y descomprimirlo en una carpeta. Desde esa carpeta, ejecuta `bundle install` para completar la instalación.

El uso es bastante sencillo:desde la línea de comando, ejecute ` redis-audit.rb hostname [puerto] [contraseña] [dbnum] [sample_size]`

Profesionales de Redis-Audit:

  • Le permite definir su propia expresión regular para la agrupación de espacios de teclas/prefijos.
  • Funciona en todas las versiones de Redis.
  • Si el tamaño de la muestra es mayor que el número real de claves, recorre todas las claves. Por otro lado, esta operación utiliza las teclas *, en lugar de escanear, lo que posiblemente bloquee otras operaciones.

Desventajas de auditoría de Redis:

  • Utiliza el comando DEBUG OBJECT (no disponible en ElastiCache); como resultado, informa sobre el tamaño serializado, que difiere del tamaño real ocupado en la RAM.
  • La salida no es muy fácil de analizar rápidamente, ya que no está tabularizada.

5) Conjunto de herramientas de Redis

Redis Toolkit es una solución básica de monitoreo que se puede usar para analizar dos métricas clave:tasa de aciertos y consumo de memoria. El proyecto se actualiza periódicamente para corregir errores, pero la comunidad no admite algunas de las herramientas más famosas que disfrutan.

Instalación y uso del kit de herramientas de Redis:

Debe tener Docker instalado en su sistema. Luego, clone el repositorio de GitHub (o descárguelo como zip y descomprímalo en una carpeta). Desde esa carpeta, la instalación es tan simple como ejecutar `./redis-toolkit install`.

El uso es puramente a través de la línea de comandos, a través de una serie de comandos simples.

  • Para comenzar a monitorear la tasa de aciertos:./redis-toolkit monitor
  • Para informar la tasa de aciertos:./redis-toolkit report -name NAME -type hitrate
  • Para dejar de monitorear la tasa de aciertos:./redis-toolkit stop
  • Para crear el archivo de volcado en el sistema local:./redis-toolkit dump
  • Para informar sobre el uso de la memoria:./redis-toolkit report -type memory -name NAME

Ventajas del kit de herramientas de Redis:

  • Interfaz fácil de entender que le brinda la información exacta que necesita.
  • Puede agrupar prefijos en cualquier nivel que le resulte útil (por lo que si elige a:b:1 y a:c:1, se cuentan como a:* o por separado) .
  • Funciona en todas las versiones de Redis; no requiere acceso a comandos privilegiados como DEBUG OBJECT.
  • Bien documentado.

Desventajas del kit de herramientas de Redis:

  • El análisis de la memoria no es en vivo; dado que funciona en el volcado serializado, el uso de memoria informado no será igual al consumo real de RAM.
  • Se debe crear un volcado en la computadora donde se ejecuta Redis Toolkit. Si tiene una instancia remota de Redis, esto puede llevar un tiempo.
  • La supervisión de la tasa de aciertos utiliza el comando MONITOR para capturar todos los comandos que se han ejecutado en el servidor. Esto puede degradar el rendimiento y es un posible riesgo de seguridad en la producción.
  • La tasa de aciertos se calcula como |GET| / (|OBTENER| + |FIJAR|). Por lo tanto, si un valor cambia con frecuencia, su tasa de aciertos será menor, incluso si nunca hubo un error de caché real.

6) Cosecha

Esta es una herramienta de muestreo probabilístico, que se puede usar para identificar los 10 espacios de nombres/prefijos más grandes, en términos de número de claves. Es una de las herramientas más nuevas y no ha visto mucha tracción en GitHub. Pero, si es un novato de Redis que busca identificar qué tipo de datos de aplicaciones obstruyen su instancia, no puede obtener nada más simple que Harvest.

Instalación y uso de cosecha:

Esto se puede descargar como una imagen de Docker. Una vez que la imagen esté lista, puede ejecutar la herramienta con el comando 'docker run –link redis:redis -it –rm 31z4/harvest redis://redis-URL' desde la CLI.

Ventajas de la cosecha:

  • Funciona en datos en vivo.
  • Utiliza el comando 'uso de memoria' para obtener información sobre el tamaño; por lo tanto:
    • Proporciona información precisa sobre el tamaño (en lugar del tamaño serializado).
    • No requiere acceso al comando DEBUG OBJECT.
  • Sus espacios de nombres no necesitan estar :(dos puntos) delineados. Harvest identifica prefijos comunes, en lugar de depender del reconocimiento de espacio de nombres basado en expresiones regulares.

Desventajas de la cosecha:

  • Es un pony de un solo truco, difícil de adaptar para cualquier otro caso de uso.
  • La herramienta solo funciona con Redis v4.0 y superior.
  • Documentación mínima.

Limitaciones de herramientas gratuitas

Si bien encontramos estas herramientas muy útiles para depurar los problemas de memoria de nuestras instancias de Redis, debe tener en cuenta las limitaciones de estas herramientas gratuitas.

Las herramientas pagas casi siempre tienen algún tipo de visualización de datos, que no está disponible de forma inmediata con ninguna de las herramientas que auditamos. Lo mejor que obtendrá es una salida CSV que puede usar otras herramientas FOSS para visualizar, y muchas herramientas ni siquiera tienen esa opción. Eso genera una curva de aprendizaje empinada, especialmente para los usuarios novatos de Redis. Si es probable que realice análisis de memoria con frecuencia, podría valer la pena buscar herramientas pagas que brinden una buena visualización.

Otra limitación es la capacidad de almacenar información histórica. De acuerdo con la filosofía general de *nix de hacer pequeñas herramientas que hacen solo una cosa, pero que la hacen bien, las herramientas rara vez se aventuran en el espacio de monitoreo. Ni siquiera un gráfico de consumo de memoria a lo largo del tiempo, y muchos ni siquiera pueden analizar datos en vivo.

El resultado final

Es probable que una sola herramienta no sea suficiente para todas sus necesidades, pero son armas bastante buenas para tener en su arsenal, junto con las capacidades de monitoreo. proporcionada por soluciones DBaaS como el alojamiento de ScaleGrid para Redis™*. Para obtener más información sobre las excelentes herramientas disponibles con nuestros servicios de alojamiento totalmente administrados para Redis™, consulte nuestra página Funciones de ScaleGrid para Redis™ por plan.