sql >> Database >  >> NoSQL >> Redis

De top 6 gratis Redis-geheugenanalysetools

Als het gaat om het analyseren van het geheugengebruik van een Redis-instantie, zijn er veel gratis en open-source tools op de markt, samen met een paar betaalde producten. Enkele van de meest populaire zijn Jacks (of all trades fame), maar als je op zoek bent naar een diepere analyse van je geheugenproblemen, ben je misschien beter af met een van de meer gerichte en minder bekende tools.

In dit bericht hebben we een lijst samengesteld van de top 6 gratis tools die we het handigst vonden bij het analyseren van het geheugengebruik van onze Redis-instanties:

  1. Redis geheugenanalysator (RMA)
  2. Redis Sampler
  3. RDB-tools
  4. Opnieuw controleren
  5. Redis-toolkit
  6. Oogst

1) Redis geheugenanalyser

Redis Memory Analyzer (RMA) is een van de meest uitgebreide FOSS-geheugenanalysers die beschikbaar zijn voor Redis. Het ondersteunt drie verschillende detailniveaus:

  • Globaal – Overzicht van informatie over geheugengebruik.
  • Scanner – Geheugengebruiksinformatie op het hoogste niveau van keyspace/prefix-niveau – met andere woorden, de kortste algemene prefix wordt gebruikt.
  • RAM – Keyspace/prefix van het laagste niveau – met andere woorden, de langste algemene prefix wordt gebruikt.

Elke modus heeft zijn eigen toepassingen - u kunt meer informatie vinden in de RMA ReadMe.

RMA – Algemene modus

In de globale modus biedt RMA enkele statistieken op hoog niveau, zoals het aantal sleutels, systeemgeheugen, residente setgrootte, keyspace-grootte, enz. Een unieke functie is de " keyspace overhead', het geheugen dat door het Redis-systeem wordt gebruikt om keyspace-gerelateerde informatie op te slaan, zoals aanwijzers voor de lijstgegevensstructuren.

RMA – Scannermodus

In de scannermodus krijgen we een overzicht van onze keyspace. Het geeft de naamruimten op hoog niveau (dus a:b:1 en a:c:1 worden samengeknuppeld als a:*), samen met de typen items en het percentage geheugen dat door die naamruimte wordt verbruikt. Het is handig om met deze informatie te beginnen en vervolgens het 'RAM'-gedrag in combinatie met het naamruimtepatroon te gebruiken om een ​​gedetailleerde analyse uit te voeren.

RMA – RAM-modus

In de RAM-modus krijgen we geheugenverbruik op keyspace-niveau, zoals geleverd door de meeste andere FOSS-geheugenanalysatoren. Dus hier worden a:b:1 en a:c:1 afzonderlijk genomen als a:b:* en a:c:* en we krijgen gedetailleerde informatie over het gebruikte geheugen, de werkelijke gegevensgrootte, overhead, codering, min en max TTL , enz. Dit helpt bij het opsporen van de grootste geheugenvreters in ons systeem.

Helaas wordt deze tool niet altijd bijgewerkt (de laatste commit op GitHub is meer dan een jaar geleden). Toch is dit een van de beste die we hebben gevonden voor gedetailleerde analyse.

RMA-installatie en gebruik:

RMA vereist dat Python en PIP op het systeem zijn geïnstalleerd (beide zijn beschikbaar voor alle belangrijke besturingssystemen). Nadat ze zijn geïnstalleerd, kunt u een enkele opdracht uitvoeren om de RDB-tools te installeren - ` pip install rma`

Het is vrij eenvoudig te gebruiken vanaf de opdrachtregel. De syntaxis is `rma [-s HOST] [-p PORT] [-a PASWOORD] [-d DB] [-m patroon-naar-overeenkomst] [-l aantal te scannen toetsen] [-b GEDRAG] [-t door komma's gescheiden-lijst-van-gegevenstypes-om te scannen]`

RMA-voordelen:

  • Werkt in realtime.
  • Gebruikt de scanopdracht om door de database te lopen, waardoor de impact op de prestaties beperkt is en de analyse zeer nauwkeurig is.
  • Goed gedocumenteerd - het is gemakkelijk om gebruiksvoorbeelden te vinden.
  • Ondersteunt robuuste aanpassings- en filteropties, waaronder alleen het analyseren van specifieke gegevenstypen, of het overwegen van alleen sleutels die overeenkomen met een specifiek patroon).
  • Kan details geven op verschillende niveaus:naamruimten, sleutels of globale waarden.
  • Uniek van alle tools die we hebben gecontroleerd, omdat het de overhead van de datastructuur laat zien (dat wil zeggen, hoeveel geheugen wordt gebruikt om interne Redis-informatie op te slaan, zoals de aanwijzers voor een lijstgegevenstype ).

RMA nadelen:

  • Ondersteunt geen probabilistische steekproeven. Het lineair scannen van de database kan erg traag zijn voor grote databases; er is de optie om het scannen te stoppen zodra een bepaald aantal sleutels is geretourneerd om de prestaties te verbeteren.
  • Er zijn veel details in de uitvoer; hoewel nuttig voor experts, kan het alleen maar dienen om beginners in verwarring te brengen.

2) Redis Sampler

Redis Sampler is een zeer krachtige tool die diepgaande inzichten kan geven in het geheugengebruik van een Redis-instantie. Het wordt onderhouden door antirez, de ontwikkelaar achter Redis, en die diepgaande kennis van Redis komt tot uiting in deze tool. De tool wordt niet vaak bijgewerkt, maar er zijn toch niet veel problemen gemeld.

Redis Sampler voert een probabilistische scan uit van de database en rapporteert de volgende informatie:

  • De procentuele verdeling van sleutels over verschillende gegevenstypen, op basis van het aantal sleutels, in plaats van de grootte van objecten.
  • De grootste sleutels van het type string, gebaseerd op strlen, en het percentage geheugen dat ze verbruiken.
  • Voor alle andere gegevenstypen worden de grootste sleutels berekend en weergegeven als twee afzonderlijke lijsten:een op basis van de grootte van het object en een andere op basis van het aantal items in de voorwerp.
  • Voor elk gegevenstype wordt ook een "Power of 2-distributie" weergegeven. Dit is erg handig om de grootteverdeling binnen een gegevenstype te begrijpen. De uitvoer geeft in feite aan welk percentage sleutels van een bepaald type een grootte heeft in het bereik> 2^x en <=2^x+1.

Redis Sampler installatie en gebruik:

Dit is een enkel Ruby-script. Het vereist dat Ruby al is geïnstalleerd. Je hebt ook `rubygems` en `redis` gems nodig om te installeren. Het gebruik is vrij eenvoudig - voer vanaf de opdrachtregel `./redis-sampler.rb`

uit

Redis Sampler Voordelen:

  • Zeer eenvoudig te gebruiken - geen opties om te onderzoeken en te begrijpen.
  • De uitvoer is gemakkelijk te begrijpen, zelfs voor beginners, maar bevat voldoende informatie voor zeer gedetailleerde analyses van een Redis-instantie door experts. De secties zijn duidelijk afgebakend en gemakkelijk uit te filteren.
  • Werkt op alle Redis-versies.
  • Gebruikt geen geprivilegieerde commando's zoals DEBUG OBJECT, dus het kan op elk systeem worden gebruikt, inclusief ElastiCache van Amazon.
  • Het gebruikt datatype-specifieke lengtecommando's om de datagrootte te identificeren, dus het gerapporteerde gebruik wordt niet beïnvloed door serialisatie.
  • Werkt op live data. Hoewel de aanbeveling is om op de loopback-interface te draaien, ondersteunt het bemonsteringssystemen op afstand.

Redis Sampler nadelen:

  • Als de steekproefgrootte hoger is ingesteld dan de databasekardinaliteit, wordt nog steeds RANDOMKEYS gebruikt in plaats van SCAN.
  • Geen bundel of Docker-afbeelding beschikbaar. Je moet afhankelijkheden handmatig installeren (hoewel er aan de positieve kant maar 2 afhankelijkheden zijn).
  • Rapporteert de gegevensgrootte, die niet exact overeenkomt met de ruimte die in het RAM-geheugen wordt ingenomen vanwege de overhead van de gegevensstructuuropslag.
  • Werkt niet kant-en-klaar als uw Redis-instantie verificatie vereist. U moet het script wijzigen om een ​​wachtwoord te krijgen; in de eenvoudigste vorm kun je zoeken naar:
    redis =Redis.new(:host => ARGV[0], :port => ARGV[1].to_i, :db => ARGV[2].to_i)
    en verander het in:
    redis =Redis.new(:host => ARGV[0], :port => ARGV[1].to_i, :db => ARGV[2].to_i, :wachtwoord => "voeg hier uw wachtwoord toe")
Bekijk de top 6 gratis #Redis geheugenanalysetoolsKlik om te tweeten

3) RDB-hulpprogramma's

RDB Tools is een zeer nuttige suite van tools voor elke serieuze Redis-beheerder. Er is een tool voor bijna elke use-case die we kunnen bedenken, maar in deze post zullen we ons uitsluitend concentreren op de tool voor geheugenanalyse.
Hoewel lang niet zo uitgebreid als RMA of Redis Sampler, geeft RDB Tools 3 belangrijke stukjes informatie:

1) Alle sleutels waarvan de waarde een (geserialiseerde) grootte heeft groter dan B bytes [B gespecificeerd door gebruiker].

2) De grootste N-sleutels [N gespecificeerd door gebruiker].

3) Grootte van een bepaalde sleutel:deze wordt live uit de database gelezen.

Deze suite heeft veel actieve bijdragers op GitHub en wordt vrij vaak bijgewerkt. RDB Tools is ook goed gedocumenteerd op internet. De beheerder sripathikrishnan staat in de Redis-gemeenschap bekend om de vele tools die hij in de loop der jaren heeft geleverd.

RDB Tools installatie en gebruik:

RDB Tools vereist dat Python en PIP op het systeem zijn geïnstalleerd (beide zijn beschikbaar voor alle belangrijke besturingssystemen). Nadat ze zijn geïnstalleerd, kunt u een enkele opdracht uitvoeren om de RDB-tools te installeren - ` pip install rdbtools python-lz`

Het gebruik is vrij eenvoudig:

  • Om 200 grootste sleutels te krijgen:rdb -c memory /var/redis/6379/dump.rdb –largest 200 -f memory.csv
  • Om alle sleutels groter dan 128 bytes te krijgen:rdb -c memory /var/redis/6379/dump.rdb –bytes 128 -f memory.csv
  • Om de grootte van een sleutel te krijgen:redis-memory-for-key -s localhost -p 6379 -a mypassword person:1

RDB Tools Voordelen:

  • Voert een CSV-bestand uit, dat kan worden gebruikt met andere FOSS-tools om eenvoudig gegevensvisualisaties te maken, en dat ook kan worden geïmporteerd in RDBMS-es om analyses uit te voeren.
  • Zeer goed gedocumenteerd.
  • Ondersteunt aanpassings- en filteropties, zodat u nuttigere rapporten kunt krijgen.

RDB Tools nadelen:

  • Hun analyse werkt niet op live gegevens; je moet een RDB-dump nemen. Als gevolg hiervan is het gerapporteerde geheugengebruik het geserialiseerde geheugen, wat niet precies hetzelfde is als het geheugen dat in RAM wordt gebruikt.
  • Het heeft geen ingebouwde ondersteuning voor groeperen, dus het kan de grootste naamruimten niet vinden.

4) Opnieuw controleren

Redis-Audit is een probabilistische tool die handig is om snel een overzicht te krijgen van je geheugengebruik. Het geeft nuttige informatie over sleutelgroepen, zoals algemeen geheugenverbruik, maximale TTL in de groep, gemiddelde laatste toegangstijd, het percentage sleutels in de groep dat verloopt, enz. Dit is de perfecte tool als u het meeste geheugen moet vinden. hogging-sleutelgroep in uw applicatie.

Redis-Audit installatie en gebruik:

Je moet Ruby en Bundle al hebben geïnstalleerd. Eenmaal geïnstalleerd, kunt u de Redis-Audit-repository naar een map klonen of de zip downloaden en uitpakken naar een map. Voer vanuit die map `bundle install` uit om de installatie te voltooien.

Het gebruik is vrij eenvoudig:voer vanaf de opdrachtregel ` redis-audit.rb hostname [port] [password] [dbnum] [sample_size]`

uit

Redis-Audit Voordelen:

  • Hiermee kunt u uw eigen regex definiëren voor keyspace/prefix-groepering.
  • Werkt op alle Redis-versies.
  • Als de steekproefomvang groter is dan het werkelijke aantal sleutels, loopt het door alle sleutels. Aan de andere kant gebruikt deze bewerking toetsen * in plaats van scannen, waardoor andere bewerkingen mogelijk worden geblokkeerd.

Redis-Audit nadelen:

  • Gebruikt DEBUG OBJECT-opdracht (niet beschikbaar in ElastiCache); als gevolg hiervan rapporteert het over de geserialiseerde grootte - die verschilt van de werkelijke grootte die in RAM wordt gebruikt.
  • De uitvoer is niet erg gemakkelijk om snel te ontleden, omdat deze niet in tabelvorm wordt weergegeven.

5) Redis Toolkit

Redis Toolkit is een eenvoudige monitoringoplossing die kan worden gebruikt om twee belangrijke statistieken te analyseren:hitrate en geheugenverbruik. Het project wordt regelmatig bijgewerkt voor bugfixes, maar heeft niet de community-ondersteuning die sommige van de bekendere tools genieten.

Redis Toolkit installatie en gebruik:

Je moet Docker op je systeem hebben geïnstalleerd. Kloon vervolgens de GitHub-repository (of download als zip en pak het uit naar een map). Vanuit die map is de installatie net zo eenvoudig als het uitvoeren van `./redis-toolkit install`.

Gebruik is puur via de opdrachtregel, via een reeks eenvoudige opdrachten.

  • Om de hit-rate te gaan monitoren:./redis-toolkit monitor
  • Hiermee rapporteren:./redis-toolkit report -name NAME -type hitrate
  • Om te stoppen met het monitoren van hit-rate:./redis-toolkit stop
  • Om het dumpbestand op het lokale systeem te maken:./redis-toolkit dump
  • Om geheugengebruik te rapporteren:./redis-toolkit report -type memory -name NAME

Redis Toolkit Voordelen:

  • Eenvoudig te begrijpen interface die u de exacte informatie geeft die u nodig heeft.
  • Kan voorvoegsels groeperen op elk niveau dat nuttig voor je is (dus als je a:b:1 en a:c:1 kiest, worden ze geteld als a:* of afzonderlijk) .
  • Werkt op alle Redis-versies; vereist geen toegang tot geprivilegieerde commando's zoals DEBUG OBJECT.
  • Goed gedocumenteerd.

Redis Toolkit nadelen:

  • De geheugenanalyse is niet live; aangezien het werkt op de geserialiseerde dump, zal het gerapporteerde geheugengebruik niet gelijk zijn aan het werkelijke RAM-verbruik.
  • Er moet een dump worden gemaakt op de computer waarop Redis Toolkit draait. Als je een externe Redis-instantie hebt, kan dit even duren.
  • Het bewaken van de hitrate gebruikt het MONITOR-commando om alle commando's vast te leggen die op de server zijn uitgevoerd. Dit kan de prestaties verslechteren en vormt een mogelijk veiligheidsrisico in de productie.
  • De hit rate wordt berekend als |GET| / (|GET| + |SET|). Dus als een waarde vaak verandert, zal de hit rate lager zijn, zelfs als er nooit een echte cache is gemist.

6) Oogst

Dit is een probabilistische steekproeftool, die kan worden gebruikt om de 10 grootste naamruimten/prefixen te identificeren, in termen van het aantal sleutels. Het is een van de nieuwste tools en heeft niet veel grip op GitHub gezien. Maar als u een Redis-beginner bent en wilt weten wat voor soort applicatiegegevens uw instantie verstoppen, kunt u niets eenvoudiger krijgen dan Harvest.

Installatie en gebruik oogsten:

Dit kan worden gedownload als een Docker-afbeelding. Zodra de afbeelding gereed is, kunt u de tool uitvoeren met de opdracht 'docker run -link redis:redis -it -rm 31z4/harvest redis://redis-URL' vanuit de CLI.

Voordeel oogst:

  • Werkt op live data.
  • Gebruikt de opdracht 'memory use' om informatie over de grootte te krijgen; vandaar:
    • Geeft nauwkeurige maatinformatie (in plaats van geserialiseerde maat).
    • Vereist geen toegang tot de opdracht DEBUG OBJECT.
  • Uw naamruimten hoeven niet :(dubbele punt) te zijn afgebakend. Harvest identificeert veelvoorkomende voorvoegsels, in plaats van afhankelijk te zijn van op regex gebaseerde naamruimteherkenning.

Oogst nadelen:

  • Het is een one-trick pony - moeilijk om het aan te passen voor een ander gebruik.
  • De tool werkt alleen met Redis v4.0 en hoger.
  • Minimale documentatie.

Beperkingen van de gratis tool

Hoewel we deze hulpprogramma's erg handig vonden voor het opsporen van fouten in het geheugen van onze Redis-instanties, moet u zich bewust zijn van de beperkingen van deze gratis hulpprogramma's.

De betaalde tools hebben bijna altijd een soort datavisualisatie, die niet standaard beschikbaar is met een van de tools die we hebben gecontroleerd. Het beste dat u krijgt, is een CSV-uitvoer die u met andere FOSS-tools kunt visualiseren, en veel tools hebben die optie niet eens. Dat zorgt voor een steile leercurve, vooral voor beginnende Redis-gebruikers. Als u waarschijnlijk vaak geheugenanalyses uitvoert, is het misschien de moeite waard om te kijken naar betaalde tools die een goede visualisatie bieden.

Een andere beperking is de mogelijkheid om historische informatie op te slaan. In overeenstemming met de algemene *nix-filosofie van het maken van kleine tools die slechts één ding doen, maar het goed doen, wagen de tools zich zelden in de monitoringruimte. Zelfs geen grafiek van het geheugenverbruik in de loop van de tijd, en velen kunnen zelfs geen live gegevens analyseren.

Het komt erop neer

Eén enkele tool zal waarschijnlijk niet voldoende zijn voor al je behoeften, maar het zijn behoorlijk geweldige wapens om in je arsenaal te hebben, gecombineerd met de monitoringmogelijkheden geleverd door DBaaS-oplossingen zoals ScaleGrid's hosting voor Redis™*! Bekijk onze ScaleGrid-functies voor Redis™ per abonnement voor meer informatie over de geweldige tools die beschikbaar zijn bij onze volledig beheerde hostingservices voor Redis™.


  1. Hoe kan ik de waarde van Redis krijgen en deze in een variabele in NGiNX plaatsen?

  2. Hoe naamruimtesleutels op redis te gebruiken om naambotsingen te voorkomen?

  3. Documenten beheren in MongoDB

  4. hoe sleutels te krijgen die niet overeenkomen met een bepaald patroon in redis?