Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

As 6 principais ferramentas gratuitas de análise de memória Redis

Quando se trata de analisar o uso de memória de uma instância do Redis, existem muitas ferramentas gratuitas e de código aberto no mercado, além de um punhado de produtos pagos. Alguns dos mais populares são Jacks (de toda a fama), mas se você estiver procurando por uma análise mais profunda de seus problemas de memória, talvez seja melhor usar uma das ferramentas mais direcionadas e menos conhecidas.

Nesta postagem, compilamos uma lista das 6 principais ferramentas gratuitas que consideramos mais úteis para analisar o uso de memória de nossas instâncias do Redis:

  1. Analisador de memória Redis (RMA)
  2. Amostrador Redis
  3. Ferramentas RDB
  4. Redis-Auditoria
  5. Kit de ferramentas Redis
  6. Colheita

1) Analisador de memória Redis



O Redis Memory Analyzer (RMA) é um dos analisadores de memória FOSS mais abrangentes disponíveis para Redis. Ele suporta três níveis diferentes de detalhes:

  • Global – Visão geral das informações de uso de memória.
  • Scanner – Informações de uso de memória de nível de prefixo/espaço de chave de nível mais alto – em outras palavras, o prefixo comum mais curto é usado.
  • RAM – Espaço-chave/prefixo de nível mais baixo – em outras palavras, o prefixo comum mais longo é usado.

Cada modo tem seus próprios usos - você pode obter mais detalhes no RMA ReadMe.


RMA – Modo Global

No modo global, o RMA fornece algumas estatísticas de alto nível, como o número de chaves, memória do sistema, tamanho do conjunto residente, tamanho do keyspace, etc. Um recurso exclusivo é o “ keyspace overhead”, que é a memória usada pelo sistema Redis para armazenar informações relacionadas ao keyspace, como ponteiros para as estruturas de dados da lista.

RMA – Modo Scanner



No modo de varredura, obtemos uma visão geral do nosso keyspace. Ele fornece os namespaces de alto nível (portanto, a:b:1 e a:c:1 são agrupados como a:*), juntamente com os tipos de seus itens e a porcentagem de memória consumida por esse namespace. É útil começar com essas informações e, em seguida, usar o comportamento de 'RAM' juntamente com o padrão de namespace para fazer uma análise detalhada.

RMA – Modo RAM



No modo RAM, obtemos o consumo de memória no nível do keyspace, conforme fornecido pela maioria dos outros analisadores de memória FOSS. Então, aqui, a:b:1 e a:c:1 são considerados separadamente como a:b:* e a:c:* e obtemos informações detalhadas sobre a memória usada, tamanho real dos dados, sobrecarga, codificação, TTL mínimo e máximo , etc. Isso ajuda a identificar os maiores consumidores de memória em nosso sistema.

Infelizmente, essa ferramenta nem sempre é atualizada (o último commit no GitHub é há mais de um ano). Mesmo assim, este é um dos melhores que encontramos para uma análise detalhada.

Instalação e uso do RMA:

O RMA requer que o Python e o PIP estejam instalados no sistema (ambos estão disponíveis para todos os principais sistemas operacionais). Uma vez instalados, você pode executar um único comando para instalar as ferramentas RDB – `pip install rma`

É bem simples de usar a partir da linha de comando. A sintaxe é `rma [-s HOST] [-p PORT] [-a PASSWORD] [-d DB] [-m pattern-to-match] [-l number-of-keys-to-scan] [-b COMPORTAMENTO] [-t lista de tipos de dados separados por vírgula para digitalizar]`

Prós de RMA:

  • Funciona em tempo real.
  • Usa o comando de varredura para percorrer o banco de dados, portanto, o impacto no desempenho é limitado e a análise é muito precisa.
  • Bem documentado – é fácil encontrar exemplos de uso.
  • Suporta opções robustas de personalização e filtragem, incluindo a análise apenas de tipos de dados específicos ou considerando apenas chaves que correspondem a um padrão específico).
  • Pode fornecer detalhes em diferentes níveis – namespaces, chaves ou valores globais.
  • Única entre todas as ferramentas que auditamos, pois mostra a sobrecarga da estrutura de dados (ou seja, quanta memória é usada para armazenar informações internas do Redis, como os ponteiros para um tipo de dados de lista ).

Contras do RMA:

  • Não suporta amostragem probabilística. A varredura linear do banco de dados pode ser muito lenta para bancos de dados grandes; existe a opção de interromper a verificação assim que um determinado número de chaves for retornado para melhorar o desempenho.
  • Há muitos detalhes na saída; embora útil para especialistas, pode servir apenas para confundir os novatos.

2) Amostrador Redis



O Redis Sampler é uma ferramenta muito poderosa que pode fornecer informações detalhadas sobre o uso de memória de uma instância do Redis. Ele é mantido por antirez, o desenvolvedor por trás do Redis, e esse profundo conhecimento do Redis aparece nesta ferramenta. A ferramenta não é atualizada com muita frequência - mas não há muitos problemas relatados de qualquer maneira.


O Redis Sampler faz uma varredura probabilística do banco de dados e relata as seguintes informações:

  • A distribuição percentual de chaves entre vários tipos de dados, com base no número de chaves, em vez do tamanho dos objetos.
  • As maiores chaves do tipo string, com base em strlen, e a porcentagem de memória que elas consomem.
  • Para todos os outros tipos de dados, as maiores chaves são calculadas e exibidas como duas listas separadas:uma com base no tamanho do objeto e outra com base no número de itens no objeto.
  • Para cada tipo de dado, também mostra uma distribuição “Power of 2”. Isso é realmente útil para entender a distribuição de tamanho dentro de um tipo de dados. A saída basicamente detalha qual porcentagem de chaves de um determinado tipo são de tamanho no intervalo> 2^x e <=2^x+1.

Instalação e uso do amostrador Redis:

Este é um único script Ruby. Requer que o Ruby já esteja instalado. Você também precisa que as gems `rubygems` e `redis` sejam instaladas. O uso é bem direto – na linha de comando, execute `./redis-sampler.rb `

Prós do Sampler Redis:

  • Muito simples de usar – sem opções para investigar e entender.
  • A saída é fácil de entender, mesmo para iniciantes, mas possui informações suficientes para análises muito detalhadas de uma instância do Redis por especialistas. As seções são claramente demarcadas e fáceis de filtrar.
  • Funciona em todas as versões do Redis.
  • Não usa nenhum comando privilegiado como DEBUG OBJECT, portanto pode ser usado em qualquer sistema, incluindo o ElastiCache da Amazon.
  • Ele usa comandos de comprimento específicos do tipo de dados para identificar o tamanho dos dados, portanto, o uso relatado não é afetado pela serialização.
  • Funciona em dados dinâmicos. Embora a recomendação seja executar na interface de loopback, ela suporta amostragem de sistemas remotos.

Contras do Amostrador Redis:

  • Se o tamanho da amostra for definido mais alto que a cardinalidade do banco de dados, ele ainda usará RANDOMKEYS em vez de SCAN.
  • Nenhum pacote ou imagem do Docker disponível. Você precisa instalar as dependências manualmente (embora, pelo lado positivo, existam apenas 2 dependências).
  • Relata o tamanho dos dados, que não corresponde exatamente ao espaço ocupado na RAM devido às sobrecargas de armazenamento da estrutura de dados.
  • Não funciona imediatamente se sua instância do Redis exigir autenticação. Você precisa modificar o script para obter uma senha; na forma mais simples você pode procurar por:
    redis =Redis.new(:host => ARGV[0], :port => ARGV[1].to_i, :db => ARGV[2].to_i)
    e altere para:
    redis =Redis.new(:host => ARGV[0], :port => ARGV[1].to_i, :db => ARGV[2].to_i, :senha => “adicione sua senha aqui”)
Confira as 6 principais ferramentas gratuitas de análise de memória #RedisClick To Tweet

3) Ferramentas RDB



O RDB Tools é um conjunto de ferramentas muito útil para qualquer administrador sério do Redis. Existe uma ferramenta para quase todos os casos de uso que podemos imaginar, mas neste post, vamos nos concentrar apenas na ferramenta de análise de memória.
Embora não seja tão abrangente quanto RMA ou Redis Sampler, RDB Tools oferece 3 informações importantes:


1) Todas as chaves onde value tem tamanho (serializado) maior que B bytes [B especificado por do utilizador].


2) As maiores N teclas [N especificadas pelo usuário].


3) Tamanho de uma chave específica:é lida ao vivo no banco de dados.

Esta suíte tem muitos contribuidores ativos no GitHub e é atualizada com bastante frequência. RDB Tools também está bem documentado na internet. O mantenedor sripathikrishnan é bem conhecido na comunidade Redis pelas muitas ferramentas que forneceu ao longo dos anos.

Instalação e uso das ferramentas RDB:

O RDB Tools requer que o Python e o PIP estejam instalados no sistema (ambos estão disponíveis para todos os principais sistemas operacionais). Uma vez instalados, você pode executar um único comando para instalar as ferramentas RDB – ` pip install rdbtools python-lz`

O uso é bem direto:

  • Para obter as 200 maiores chaves:rdb -c memory /var/redis/6379/dump.rdb –largest 200 -f memory.csv
  • Para obter todas as chaves maiores que 128 bytes:rdb -c memory /var/redis/6379/dump.rdb –bytes 128 -f memory.csv
  • Para obter o tamanho de uma chave:redis-memory-for-key -s localhost -p 6379 -a mypassword person:1

Prós das ferramentas RDB:

  • Produz um arquivo CSV, que pode ser usado com outras ferramentas FOSS para criar visualizações de dados facilmente e também pode ser importado para RDBMS-es para executar análises.
  • Muito bem documentado.
  • Suporta opções de personalização e filtragem para que você possa obter relatórios mais úteis.

Ferramentas RDB Contras:

  • Sua análise não funciona em dados ao vivo; você deve fazer um dump RDB. Como resultado, o uso de memória relatado é a memória serializada, que não é exatamente a mesma que a memória ocupada na RAM.
  • Ele não possui nenhum suporte interno para agrupamento, portanto, não pode encontrar os maiores namespaces.

4) Redis-Auditoria



O Redis-Audit é uma ferramenta probabilística útil para obter uma visão geral rápida do uso da memória. Ele gera informações úteis sobre grupos de chaves, como consumo geral de memória, TTL máximo no grupo, tempo médio do último acesso, porcentagem de chaves no grupo que expiram, etc. monopolizando o grupo de chaves em seu aplicativo.


Instalação e uso do Redis-Audit:

Você deve ter o Ruby e o Bundle já instalados. Uma vez instalado, você pode clonar o repositório Redis-Audit em uma pasta ou baixar o zip e descompactá-lo em uma pasta. A partir dessa pasta, execute `bundle install` para concluir a instalação.


O uso é bem direto:na linha de comando, execute ` redis-audit.rb hostname [port] [password] [dbnum] [sample_size]`


Prós do Redis-Auditoria:

  • Permite que você defina seu próprio regex para agrupamento de keyspace/prefix.
  • Funciona em todas as versões do Redis.
  • Se o tamanho da amostra for maior que o número real de chaves, ele percorre todas as chaves. Por outro lado, esta operação usa as teclas *, em vez de varredura – possivelmente bloqueando outras operações.

Redis-Auditoria Contras:

  • Usa o comando DEBUG OBJECT (indisponível no ElastiCache); como resultado, ele relata o tamanho serializado – que difere do tamanho real ocupado na RAM.
  • A saída não é muito fácil de analisar rapidamente, pois não é tabularizada.

5) Kit de ferramentas Redis



O Redis Toolkit é uma solução de monitoramento básica que pode ser usada para analisar duas métricas principais:taxa de acertos e consumo de memória. O projeto é atualizado periodicamente para correções de bugs, mas não tem o suporte da comunidade que algumas das ferramentas mais famosas desfrutam.

Instalação e uso do Redis Toolkit:



Você deve ter o Docker instalado em seu sistema. Em seguida, clone o repositório do GitHub (ou baixe como zip e descompacte em uma pasta). A partir dessa pasta, a instalação é tão simples quanto executar `./redis-toolkit install`.

O uso é puramente via linha de comando, através de uma série de comandos simples.

  • Para iniciar o monitoramento da taxa de acertos:./redis-toolkit monitor
  • Para relatar a taxa de acertos:./redis-toolkit report -name NAME -type hitrate
  • Para interromper o monitoramento da taxa de acertos:./redis-toolkit stop
  • Para criar o arquivo de despejo no sistema local:./redis-toolkit dump
  • Para relatar o uso de memória:./redis-toolkit report -type memory -name NAME

Prós do Redis Toolkit:

  • Interface fácil de entender que fornece as informações exatas que você precisa.
  • Pode agrupar prefixos em qualquer nível que seja útil para você (portanto, se você escolher a:b:1 e a:c:1, eles serão contados como a:* ou separadamente) .
  • Funciona em todas as versões do Redis; não requer acesso a comandos privilegiados como DEBUG OBJECT.
  • Bem documentado.

Contras do Redis Toolkit:

  • A análise de memória não está ativa; como funciona no dump serializado, o uso de memória relatado não será igual ao consumo real de RAM.
  • Um dump deve ser criado no computador em que o Redis Toolkit está sendo executado. Se você tiver uma instância remota do Redis, isso pode demorar um pouco.
  • O monitoramento da taxa de acertos usa o comando MONITOR para capturar todos os comandos executados no servidor. Isso pode prejudicar o desempenho e é um possível risco de segurança na produção.
  • A taxa de acerto é calculada como |GET| / (|GET| + |SET|). Portanto, se um valor for alterado com frequência, sua taxa de acerto será menor, mesmo que nunca tenha havido um erro de cache real.

6) Colheita



Esta é uma ferramenta de amostragem probabilística, que pode ser usada para identificar os 10 maiores namespaces/prefixos, em termos de número de chaves. É uma das ferramentas mais recentes e não teve muita tração no GitHub. Mas, se você é um novato do Redis procurando identificar que tipo de dados de aplicativo está obstruindo sua instância, não há nada mais simples do que o Harvest.

Instalação e uso da colheita:

Pode ser baixado como uma imagem do Docker. Quando a imagem estiver pronta, você pode executar a ferramenta usando o comando ‘docker run –link redis:redis -it –rm 31z4/harvest redis://redis-URL’ da CLI.

Prós da colheita:

  • Funciona em dados dinâmicos.
  • Usa o comando 'uso de memória' para obter informações de tamanho; daí:
    • Fornece informações de tamanho precisas (em vez de tamanho serializado).
    • Não requer acesso ao comando DEBUG OBJECT.
  • Seus namespaces não precisam ser :(dois pontos) delineados. O Harvest identifica prefixos comuns, em vez de depender do reconhecimento de namespace baseado em regex.

Desvantagens da colheita:

  • É um pônei de um truque – difícil de adaptá-lo para qualquer outro caso de uso.
  • A ferramenta funciona apenas com o Redis v4.0 e superior.
  • Documentação mínima.

Limitações de ferramentas gratuitas

Embora tenhamos achado essas ferramentas muito úteis para depurar problemas de memória de nossas instâncias do Redis, você deve estar ciente das limitações dessas ferramentas gratuitas.

As ferramentas pagas quase sempre têm algum tipo de visualização de dados, que não está disponível pronta para uso em nenhuma das ferramentas que auditamos. O melhor que você obterá é uma saída CSV que você pode usar outras ferramentas FOSS para visualizar, e muitas ferramentas nem têm essa opção. Isso contribui para uma curva de aprendizado íngreme, especialmente para usuários iniciantes do Redis. Se você costuma fazer análises de memória com frequência, pode valer a pena procurar ferramentas pagas que forneçam uma boa visualização.

Outra limitação é a capacidade de armazenar informações históricas. De acordo com a filosofia geral *nix de fazer pequenas ferramentas que fazem apenas uma coisa, mas fazem bem, as ferramentas raramente se aventuram no espaço de monitoramento. Nem mesmo um gráfico de consumo de memória ao longo do tempo, e muitos nem conseguem analisar dados ao vivo.

O resultado final

Uma única ferramenta provavelmente não será suficiente para todas as suas necessidades, mas são ótimas armas para ter em seu arsenal, combinadas com os recursos de monitoramento fornecido por soluções de DBaaS, como a hospedagem do ScaleGrid para Redis™*! Para saber mais sobre as excelentes ferramentas disponíveis com nossos serviços de hospedagem totalmente gerenciados para Redis™, confira nossa página de recursos do ScaleGrid para Redis™ por plano.