Redis
 sql >> Database >  >> NoSQL >> Redis

I 6 migliori strumenti gratuiti per l'analisi della memoria Redis

Quando si tratta di analizzare l'utilizzo della memoria di un'istanza Redis, ci sono molti strumenti gratuiti e open source sul mercato, insieme a un'infarinatura di prodotti a pagamento. Alcuni dei più popolari sono Jacks (di fama mondiale), ma se stai cercando un'analisi più approfondita dei tuoi problemi di memoria, potresti stare meglio con uno degli strumenti più mirati e meno conosciuti.

In questo post, abbiamo compilato un elenco dei primi 6 strumenti gratuiti che abbiamo trovato più utili per analizzare l'utilizzo della memoria delle nostre istanze Redis:

  1. Analizzatore memoria Redis (RMA)
  2. Campionatore Redis
  3. Strumenti RDB
  4. Redis-Audit
  5. Kit di strumenti Redis
  6. Raccolto

1) Analizzatore memoria Redis

Redis Memory Analyzer (RMA) è uno degli analizzatori di memoria FOSS più completi disponibili per Redis. Supporta tre diversi livelli di dettaglio:

  • Globale – Panoramica delle informazioni sull'utilizzo della memoria.
  • Scanner – Informazioni sull'utilizzo della memoria a livello di spazio chiave/prefisso di livello più alto, in altre parole, viene utilizzato il prefisso comune più breve.
  • RAM – Spazio chiave/prefisso di livello più basso – in altre parole, viene utilizzato il prefisso comune più lungo.

Ogni modalità ha i suoi usi:puoi ottenere ulteriori dettagli nel ReadMe di RMA.

RMA – Modalità globale

Nella modalità globale, RMA fornisce alcune statistiche di alto livello, come il numero di chiavi, la memoria di sistema, la dimensione del set residente, la dimensione dello spazio delle chiavi, ecc. Una caratteristica unica è " keyspace overhead” che è la memoria utilizzata dal sistema Redis per memorizzare le informazioni relative allo spazio delle chiavi, come i puntatori per le strutture dei dati dell'elenco.

RMA – Modalità scanner

Nella modalità scanner, otteniamo una panoramica del nostro spazio chiave. Fornisce gli spazi dei nomi di alto livello (quindi a:b:1 e a:c:1 sono raggruppati insieme come a:*), insieme ai tipi dei suoi elementi e alla percentuale di memoria consumata da quello spazio dei nomi. È utile iniziare con queste informazioni e quindi utilizzare il comportamento "RAM" associato al pattern dello spazio dei nomi per eseguire un'analisi dettagliata.

RMA – Modalità RAM

Nella modalità RAM, otteniamo un consumo di memoria a livello di spazio chiave, come fornito dalla maggior parte degli altri analizzatori di memoria FOSS. Quindi qui, a:b:1 e a:c:1 vengono presi separatamente come a:b:* e a:c:* e otteniamo informazioni dettagliate sulla memoria utilizzata, la dimensione effettiva dei dati, l'overhead, la codifica, il TTL minimo e massimo , ecc. Questo aiuta a individuare i più grandi monopoli di memoria nel nostro sistema.

Purtroppo questo strumento non è sempre aggiornato (l'ultimo commit su GitHub risale a più di un anno fa). Anche così, questo è uno dei migliori che abbiamo trovato per un'analisi dettagliata.

Installazione e utilizzo RMA:

RMA richiede che Python e PIP siano installati sul sistema (entrambi sono disponibili per tutti i principali sistemi operativi). Una volta installati, puoi eseguire un singolo comando per installare gli strumenti RDB:` pip install rma`

È piuttosto semplice da usare dalla riga di comando. La sintassi è `rma [-s HOST] [-p PORT] [-a PASSWORD] [-d DB] [-m pattern-to-match] [-l numero-di-keys-to-scan] [-b COMPORTAMENTO] [-t elenco-di-tipi-di-dati-da-scansionare-separato-da-virgole]`

Professionisti RMA:

  • Funziona in tempo reale.
  • Utilizza il comando di scansione per esplorare il database, quindi l'impatto sulle prestazioni è limitato e l'analisi è molto accurata.
  • Ben documentato:è facile trovare esempi di utilizzo.
  • Supporta solide opzioni di personalizzazione e filtraggio, inclusa l'analisi solo di tipi di dati specifici o, considerando solo le chiavi che corrispondono a un modello specifico).
  • Può fornire dettagli a diversi livelli:spazi dei nomi, chiavi o valori globali.
  • Unico tra tutti gli strumenti che abbiamo verificato in quanto mostra l'overhead della struttura dei dati (ovvero, quanta memoria viene utilizzata per memorizzare le informazioni Redis interne come i puntatori per un tipo di dati di elenco ).

Contro RMA:

  • Non supporta il campionamento probabilistico. La scansione lineare del database può essere molto lenta per database di grandi dimensioni; c'è la possibilità di interrompere la scansione una volta restituito un certo numero di chiavi per migliorare le prestazioni.
  • Ci sono molti dettagli nell'output; sebbene utile per gli esperti, potrebbe servire solo a confondere i principianti.

2) Campionatore Redis

Redis Sampler è uno strumento molto potente che può fornire approfondimenti sull'utilizzo della memoria di un'istanza Redis. È gestito da antirez, lo sviluppatore dietro Redis, e la profonda conoscenza di Redis si manifesta in questo strumento. Lo strumento non viene aggiornato molto frequentemente, ma comunque non vengono segnalati molti problemi.

Redis Sampler esegue una scansione probabilistica del database e riporta le seguenti informazioni:

  • La distribuzione percentuale delle chiavi tra i vari tipi di dati, in base al numero di chiavi, anziché alla dimensione degli oggetti.
  • Le chiavi più grandi di tipo string, basate su strlen, e la percentuale di memoria che consumano.
  • Per tutti gli altri tipi di dati, le chiavi più grandi vengono calcolate e visualizzate come due elenchi separati:uno basato sulla dimensione dell'oggetto e un altro basato sul numero di elementi nella oggetto.
  • Per ogni tipo di dati, mostra anche una "Distribuzione Power of 2". Questo è davvero utile per comprendere la distribuzione delle dimensioni all'interno di un tipo di dati. L'output indica in pratica quale percentuale di chiavi di un determinato tipo ha dimensioni comprese tra> 2^x e <=2^x+1.

Installazione e utilizzo del campionatore Redis:

Questo è un unico script Ruby. Richiede che Ruby sia già installato. Sono necessarie anche le gemme `rubygems` e `redis` per essere installate. L'utilizzo è piuttosto semplice:dalla riga di comando, eseguire `./redis-sampler.rb `

Professionisti del campionatore Redis:

  • Molto semplice da usare:nessuna opzione da indagare e comprendere.
  • L'output è facile da capire, anche per i principianti, ma contiene informazioni sufficienti per analisi molto dettagliate di un'istanza Redis da parte di esperti. Le sezioni sono chiaramente delimitate e facili da filtrare.
  • Funziona su tutte le versioni di Redis.
  • Non utilizza comandi privilegiati come DEBUG OBJECT, quindi può essere utilizzato su qualsiasi sistema, incluso ElastiCache di Amazon.
  • Utilizza i comandi di lunghezza specifici del tipo di dati per identificare la dimensione dei dati, quindi l'utilizzo riportato non è influenzato dalla serializzazione.
  • Funziona su dati in tempo reale. Sebbene la raccomandazione sia di eseguire su un'interfaccia di loopback, supporta il campionamento di sistemi remoti.

Contro del campionatore Redis:

  • Se la dimensione del campione è impostata su un valore maggiore della cardinalità del database, utilizzerà comunque RANDOMKEYS anziché SCAN.
  • Nessuna immagine bundle o Docker disponibile. Devi installare manualmente le dipendenze (anche se il lato positivo è che ci sono solo 2 dipendenze).
  • Riporta la dimensione dei dati, che non corrisponde esattamente allo spazio occupato sulla RAM a causa delle spese generali di archiviazione della struttura dei dati.
  • Non funziona immediatamente se l'istanza Redis richiede l'autenticazione. Devi modificare lo script per prendere una password; nella forma più semplice puoi cercare:
    redis =Redis.new(:host => ARGV[0], :port => ARGV[1].to_i, :db => ARGV[2].to_i)
    e cambialo in:
    redis =Redis.new(:host => ARGV[0], :port => ARGV[1].to_i, :db => ARGV[2].to_i, :password => "aggiungi-la-password-qui")
Dai un'occhiata ai 6 migliori strumenti gratuiti per l'analisi della memoria #RedisFai clic per twittare

3) Strumenti RDB

RDB Tools è una suite di strumenti molto utile per qualsiasi amministratore Redis serio. Esiste uno strumento per quasi tutti i casi d'uso a cui potremmo pensare, ma in questo post ci concentreremo esclusivamente sullo strumento di analisi della memoria.
Anche se non è nemmeno lontanamente completo come RMA o Redis Sampler, RDB Tools fornisce 3 informazioni importanti:

1) Tutte le chiavi in ​​cui il valore ha una dimensione (serializzata) maggiore di B byte [B specificato da utente].

2) Le N chiavi più grandi [N specificate dall'utente].

3) Dimensione di una chiave particolare:questa viene letta in tempo reale dal database.

Questa suite ha molti contributori attivi su GitHub ed è aggiornata abbastanza frequentemente. RDB Tools è anche ben documentato su Internet. Il manutentore sripathikrishnan è ben noto nella comunità Redis per i numerosi strumenti che ha fornito nel corso degli anni.

Installazione e utilizzo degli strumenti RDB:

RDB Tools richiede che Python e PIP siano installati sul sistema (entrambi sono disponibili per tutti i principali sistemi operativi). Una volta installati, puoi eseguire un singolo comando per installare gli strumenti RDB:` pip install rdbtools python-lz`

L'utilizzo è piuttosto semplice:

  • Per ottenere 200 chiavi più grandi:rdb -c memory /var/redis/6379/dump.rdb –largest 200 -f memory.csv
  • Per ottenere tutte le chiavi maggiori di 128 byte:rdb -c memory /var/redis/6379/dump.rdb –bytes 128 -f memory.csv
  • Per ottenere la dimensione di una chiave:redis-memory-for-key -s localhost -p 6379 -a mypassword person:1

Professionisti degli strumenti RDB:

  • Emette un file CSV, che può essere utilizzato con altri strumenti FOSS per creare facilmente visualizzazioni di dati e può anche essere importato in RDBMS-es per eseguire analisi.
  • Molto ben documentato.
  • Supporta la personalizzazione e le opzioni di filtro, così puoi ottenere rapporti più utili.

Contro degli strumenti RDB:

  • La loro analisi non funziona sui dati in tempo reale; devi prendere un dump RDB. Di conseguenza, l'utilizzo della memoria riportato è la memoria serializzata, che non è esattamente la stessa della memoria occupata sulla RAM.
  • Non ha alcun supporto integrato per il raggruppamento, quindi non riesce a trovare gli spazi dei nomi più grandi.

4) Redis-Audit

Redis-Audit è uno strumento probabilistico utile per ottenere una rapida panoramica dell'utilizzo della memoria. Fornisce informazioni utili sui gruppi di chiavi, come il consumo complessivo di memoria, il TTL massimo nel gruppo, il tempo medio dell'ultimo accesso, la percentuale di chiavi nel gruppo che scadono, ecc. Questo è lo strumento perfetto se devi trovare la maggior parte della memoria. gruppo di chiavi hogging nella tua applicazione.

Installazione e utilizzo di Redis-Audit:

Devi avere già installato Ruby e Bundle. Una volta installato, puoi clonare il repository Redis-Audit in una cartella o scaricare lo zip e decomprimerlo in una cartella. Da quella cartella, esegui `bundle install` per completare l'installazione.

L'utilizzo è piuttosto semplice:dalla riga di comando, esegui ` redis-audit.rb hostname [port] [password] [dbnum] [sample_size]`

Redis-Audit Pro:

  • Ti consente di definire la tua espressione regolare per il raggruppamento di spazi delle chiavi/prefissi.
  • Funziona su tutte le versioni di Redis.
  • Se la dimensione del campione è maggiore del numero effettivo di chiavi, scorre tutte le chiavi. D'altra parte, questa operazione utilizza i tasti *, anziché la scansione, bloccando eventualmente altre operazioni.

Contro Redis-Audit:

  • Utilizza il comando DEBUG OBJECT (non disponibile in ElastiCache); di conseguenza, riporta le dimensioni serializzate, che differiscono dalle dimensioni effettive occupate sulla RAM.
  • L'output non è molto facile da analizzare rapidamente, poiché non è tabularizzato.

5) Redis Toolkit

Redis Toolkit è una semplice soluzione di monitoraggio che può essere utilizzata per analizzare due parametri chiave:hit rate e consumo di memoria. Il progetto viene periodicamente aggiornato per correzioni di bug ma non ha il supporto della community di cui godono alcuni degli strumenti più famosi.

Installazione e utilizzo di Redis Toolkit:

Devi avere Docker installato sul tuo sistema. Quindi, clona il repository GitHub (o scarica come zip e decomprimilo in una cartella). Da quella cartella, l'installazione è semplice come eseguire `./redis-toolkit install`.

L'utilizzo avviene esclusivamente tramite riga di comando, tramite una serie di semplici comandi.

  • Per iniziare a monitorare il tasso di successo:./redis-toolkit monitor
  • Per segnalare il tasso di successo:./redis-toolkit report -name NAME -type hitrate
  • Per interrompere il monitoraggio del tasso di successo:./redis-toolkit stop
  • Per creare il file di dump sul sistema locale:./redis-toolkit dump
  • Per segnalare l'utilizzo della memoria:./redis-toolkit report -type memory -name NAME

Professionisti di Redis Toolkit:

  • Interfaccia di facile comprensione che ti fornisce le informazioni esatte di cui hai bisogno.
  • Può raggruppare i prefissi a qualsiasi livello sia utile per te (quindi se scegli a:b:1 e a:c:1, vengono contati come a:* o separatamente) .
  • Funziona su tutte le versioni di Redis; non richiede l'accesso a comandi privilegiati come DEBUG OBJECT.
  • Ben documentato.

Contro Redis Toolkit:

  • L'analisi della memoria non è attiva; poiché funziona sul dump serializzato, l'utilizzo di memoria riportato non sarà uguale al consumo effettivo di RAM.
  • È necessario creare un dump sul computer su cui è in esecuzione Redis Toolkit. Se hai un'istanza Redis remota, l'operazione potrebbe richiedere del tempo.
  • Il monitoraggio della frequenza di risposta utilizza il comando MONITOR per acquisire tutti i comandi eseguiti sul server. Ciò può peggiorare le prestazioni ed è un possibile rischio per la sicurezza in produzione.
  • Il tasso di successo viene calcolato come |GET| / (|OTTIENI| + |IMPOSTA|). Quindi, se un valore cambia spesso, la sua percentuale di successo sarà inferiore, anche se non si è mai verificata una perdita di cache effettiva.

6) Raccolto

Questo è uno strumento di campionamento probabilistico, che può essere utilizzato per identificare i 10 spazi dei nomi/prefissi più grandi, in termini di numero di chiavi. È uno degli strumenti più recenti e non ha visto molta trazione su GitHub. Ma se sei un principiante Redis che cerca di identificare il tipo di dati dell'applicazione che sta intasando la tua istanza, non puoi ottenere niente di più semplice di Harvest.

Installazione e utilizzo del raccolto:

Questo è scaricabile come immagine Docker. Una volta che l'immagine è pronta, puoi eseguire lo strumento utilizzando il comando 'docker run –link redis:redis -it –rm 31z4/harvest redis://redis-URL' dalla CLI.

Professionisti del raccolto:

  • Funziona su dati in tempo reale.
  • Utilizza il comando 'utilizzo della memoria' per ottenere informazioni sulle dimensioni; quindi:
    • Fornisce informazioni precise sulla dimensione (anziché sulla dimensione serializzata).
    • Non richiede l'accesso al comando DEBUG OBJECT.
  • Non è necessario che i tuoi spazi dei nomi siano:(due punti) delineati. Harvest identifica prefissi comuni, anziché dipendere dal riconoscimento dello spazio dei nomi basato su espressioni regolari.

Contro del raccolto:

  • È un pony con un solo trucco, difficile da adattare a qualsiasi altro caso d'uso.
  • Lo strumento funziona solo con Redis v4.0 e versioni successive.
  • Documentazione minima.

Limitazioni degli strumenti gratuiti

Anche se abbiamo trovato questi strumenti molto utili per il debug dei problemi di memoria delle nostre istanze Redis, dovresti essere consapevole dei limiti di questi strumenti gratuiti.

Gli strumenti a pagamento hanno quasi sempre una sorta di visualizzazione dei dati, che non è disponibile immediatamente con nessuno degli strumenti che abbiamo verificato. Il meglio che otterrai è un output CSV che puoi utilizzare con altri strumenti FOSS per visualizzare e molti strumenti non hanno nemmeno questa opzione. Ciò crea una curva di apprendimento ripida, soprattutto per gli utenti Redis inesperti. Se è probabile che tu esegua spesso l'analisi della memoria, potrebbe essere utile esaminare strumenti a pagamento che forniscono una buona visualizzazione.

Un'altra limitazione è la capacità di memorizzare informazioni storiche. In linea con la filosofia generale *nix di creare piccoli strumenti che fanno solo una cosa, ma la fanno bene, gli strumenti raramente si avventurano nello spazio di monitoraggio. Nemmeno un grafico del consumo di memoria nel tempo e molti non possono nemmeno analizzare i dati in tempo reale.

La linea di fondo

Un singolo strumento probabilmente non sarà sufficiente per tutte le tue esigenze, ma sono ottime armi da avere nel tuo arsenale, insieme alle capacità di monitoraggio fornito da soluzioni DBaaS come l'hosting di ScaleGrid per Redis™*! Per saperne di più sui fantastici strumenti disponibili con i nostri servizi di hosting completamente gestiti per Redis™, dai un'occhiata alla nostra pagina delle funzionalità ScaleGrid per Redis™ per piano.