sql >> Databáze >  >> NoSQL >> Redis

Šest nejlepších bezplatných nástrojů pro analýzu paměti Redis

Pokud jde o analýzu využití paměti instance Redis, existuje na trhu spousta bezplatných a open source nástrojů spolu s řadou placených produktů. Některé z nejpopulárnějších jsou Jacks (slavnost všech profesí), ale pokud hledáte hlubší analýzu vašich problémů s pamětí, možná vám bude lépe s jedním z cílenějších a méně známých nástrojů.

V tomto příspěvku jsme sestavili seznam 6 nejlepších bezplatných nástrojů, které jsme považovali za nejužitečnější při analýze využití paměti našimi instancemi Redis:

  1. Redis Memory Analyzer (RMA)
  2. Redis Sampler
  3. Nástroje RDB
  4. Redis-Audit
  5. Sada nástrojů Redis
  6. Sklizeň

1) Redis Memory Analyzer

Redis Memory Analyzer (RMA) je jedním z nejkomplexnějších analyzátorů paměti FOSS dostupných pro Redis. Podporuje tři různé úrovně detailů:

  • Globální – Přehled informací o využití paměti.
  • Skener – Informace o využití paměti na nejvyšší úrovni klíčového prostoru/prefixu – jinými slovy, používá se nejkratší společná předpona.
  • RAM – Keyspace/prefix nejnižší úrovně – jinými slovy, používá se nejdelší společná předpona.

Každý režim má své vlastní použití – další podrobnosti můžete získat v RMA ReadMe.

RMA – globální režim

V globálním režimu poskytuje RMA některé statistiky na vysoké úrovni, jako je počet klíčů, systémová paměť, velikost rezidentní sady, velikost klíčového prostoru atd. Jedinečnou funkcí je „ keyspace overhead“, což je paměť používaná systémem Redis k ukládání informací souvisejících s keyspace, jako jsou ukazatele na datové struktury seznamu.

RMA – režim skeneru

V režimu skeneru získáme přehled o našem klíčovém prostoru. Poskytuje jmenné prostory na vysoké úrovni (takže a:b:1 a a:c:1 jsou spojeny jako a:*), spolu s typy jejích položek a procentem paměti spotřebované tímto jmenným prostorem. Je užitečné začít s těmito informacemi a poté použít chování „RAM“ spojené se vzorem jmenného prostoru k provedení podrobné analýzy.

RMA – režim RAM

V režimu RAM získáváme spotřebu paměti na úrovni klíčového prostoru, kterou poskytuje většina ostatních analyzátorů paměti FOSS. Takže zde jsou a:b:1 a a:c:1 brány odděleně jako a:b:* a a:c:* a získáme podrobné informace o použité paměti, skutečné velikosti dat, režii, kódování, minimální a maximální TTL , atd. To pomáhá určit největší pamětníky v našem systému.

Bohužel tento nástroj není vždy aktualizován (poslední potvrzení na GitHubu je před více než rokem). I tak je to jedno z nejlepších, které jsme našli pro podrobnou analýzu.

Instalace a použití RMA:

RMA vyžaduje, aby byly v systému nainstalovány Python a PIP (oba jsou dostupné pro všechny hlavní operační systémy). Jakmile jsou nainstalovány, můžete spustit jediný příkaz k instalaci nástrojů RDB – ` pip install rma`

Je to docela jednoduché použití z příkazového řádku. Syntaxe je `rma [-s HOST] [-p PORT] [-a HESLO] [-d DB] [-m pattern-to-match] [-l počet-klíčů-k-skenování] [-b CHOVÁNÍ] [-t čárkou-oddělený-seznam-datových-typů-ke-skenování]`

Výhody RMA:

  • Funguje v reálném čase.
  • K procházení databáze používá příkaz scan, a proto je dopad na výkon omezený a analýza je velmi přesná.
  • Dobře zdokumentováno – lze snadno najít příklady použití.
  • Podporuje robustní možnosti přizpůsobení a filtrování, včetně analýzy pouze konkrétních typů dat nebo zohlednění pouze klíčů odpovídajících konkrétnímu vzoru.
  • Může poskytovat podrobnosti na různých úrovních – jmenné prostory, klíče nebo globální hodnoty.
  • Unikátní mezi všemi nástroji, které jsme auditovali, v tom, že zobrazuje režii datové struktury (tj. kolik paměti je potřeba k uložení interních informací Redis, jako jsou ukazatele na datový typ seznamu ).

Nevýhody RMA:

  • Nepodporuje pravděpodobnostní vzorkování. Lineární skenování databáze může být u velkých databází velmi pomalé; existuje možnost zastavit skenování, jakmile se vrátí určitý počet klíčů, aby se zlepšil výkon.
  • Výstup obsahuje mnoho podrobností; i když je užitečný pro odborníky, může sloužit pouze ke zmatení nováčků.

2) Redis Sampler

Redis Sampler je velmi výkonný nástroj, který může poskytnout hluboký přehled o využití paměti instance Redis. Spravuje ji antirez, vývojář za Redisem, a tato hluboká znalost Redis se v tomto nástroji projevuje. Nástroj není aktualizován příliš často – ale stejně není hlášeno mnoho problémů.

Redis Sampler provede pravděpodobnostní sken databáze a nahlásí následující informace:

  • Procentuální rozdělení klíčů mezi různé typy dat – založené na počtu klíčů, nikoli na velikosti objektů.
  • Největší klíče typu řetězec na základě strlen a procento paměti, které spotřebují.
  • U všech ostatních datových typů se největší klíče vypočítávají a zobrazují jako dva samostatné seznamy:jeden podle velikosti objektu a druhý podle počtu položek v objekt.
  • Pro každý datový typ také zobrazuje „distribuci síly 2“. To je opravdu užitečné pro pochopení distribuce velikosti v rámci datového typu. Výstup v podstatě uvádí, jaké procento klíčů daného typu má velikost v rozsahu> 2^x a <=2^x+1.

Instalace a použití Redis Sampler:

Toto je jediný skript Ruby. Vyžaduje, aby byla Ruby již nainstalována. Musíte také nainstalovat drahokamy `rubygems` a `redis`. Použití je docela jednoduché – z příkazového řádku spusťte `./redis-sampler.rb `

Výhody Redis Sampler:

  • Velmi jednoduché na použití – žádné možnosti, které byste museli zkoumat a chápat.
  • Výstup je snadno srozumitelný i pro nováčky, ale obsahuje dostatek informací pro velmi podrobné analýzy instance Redis odborníky. Sekce jsou jasně ohraničené a lze je snadno odfiltrovat.
  • Funguje na všech verzích Redis.
  • Nepoužívá žádné privilegované příkazy jako DEBUG OBJECT, takže jej lze použít na jakémkoli systému, včetně ElastiCache od Amazonu.
  • K identifikaci velikosti dat používá příkazy délky specifické pro typ dat, takže uváděné využití není ovlivněno serializací.
  • Funguje na živých datech. Ačkoli se doporučuje spouštět na rozhraní zpětné smyčky, podporuje vzorkování vzdálených systémů.

Nevýhody Redis Sampler:

  • Pokud je velikost vzorku nastavena na vyšší hodnotu, než je mohutnost databáze, bude stále místo SCAN používat RANDOMKEYS.
  • Není k dispozici žádný balíček nebo obrázek Docker. Musíte ručně nainstalovat závislosti (i když na druhou stranu existují pouze 2 závislosti).
  • Uvádí velikost dat, která přesně neodpovídá prostoru obsazenému v paměti RAM kvůli režii úložiště datové struktury.
  • Nefunguje hned po vybalení, pokud vaše instance Redis vyžaduje ověření. Musíte upravit skript, aby přijal heslo; v nejjednodušší podobě můžete hledat:
    redis =Redis.new(:host => ARGV[0], :port => ARGV[1].to_i, :db => ARGV[2].to_i)
    a změňte jej na:
    redis =Redis.new(:host => ARGV[0], :port => ARGV[1].to_i, :db => ARGV[2].to_i, :heslo => „přidejte-sem-heslo“)
Podívejte se na 6 nejlepších bezplatných nástrojů pro analýzu paměti #RedisClick To Tweet

3) Nástroje RDB

RDB Tools je velmi užitečná sada nástrojů pro každého seriózního správce Redis. Existuje nástroj pro téměř každý případ použití, na který si vzpomeneme, ale v tomto příspěvku se zaměříme pouze na nástroj pro analýzu paměti.
I když zdaleka není tak komplexní jako RMA nebo Redis Sampler, RDB Tools nabízí 3 důležité informace:

1) Všechny klíče, jejichž hodnota má (serializovanou) velikost větší než B bajtů [B specifikováno uživatel].

2) Největší N klíčů [N určené uživatelem].

3) Velikost konkrétního klíče:čte se živě z databáze.

Tato sada má na GitHubu mnoho aktivních přispěvatelů a je poměrně často aktualizována. RDB Tools je také dobře zdokumentován na internetu. Správce sripathikrishnan je v komunitě Redis dobře známý díky mnoha nástrojům, které v průběhu let poskytl.

Instalace a použití nástrojů RDB:

Nástroje RDB vyžadují, aby byly v systému nainstalovány Python a PIP (oba jsou dostupné pro všechny hlavní operační systémy). Jakmile jsou nainstalovány, můžete spustit jediný příkaz k instalaci nástrojů RDB – ` pip install rdbtools python-lz`

Použití je docela jednoduché:

  • Jak získat 200 největších klíčů:rdb -c memory /var/redis/6379/dump.rdb –largest 200 -f memory.csv
  • Chcete-li získat všechny klíče větší než 128 bajtů:rdb -c memory /var/redis/6379/dump.rdb –bytes 128 -f memory.csv
  • Jak získat velikost klíče:redis-memory-for-key -s localhost -p 6379 -a mypassword person:1

Výhody nástrojů RDB:

  • Vydává soubor CSV, který lze použít s dalšími nástroji FOSS ke snadnému vytváření vizualizací dat a lze jej také importovat do RDBMS pro provádění analýz.
  • Velmi dobře zdokumentováno.
  • Podporuje možnosti přizpůsobení a filtrování, takže můžete získat užitečnější přehledy.

Zápory nástrojů RDB:

  • Jejich analýza nefunguje na živých datech; musíte provést výpis RDB. V důsledku toho je hlášené využití paměti serializovaná paměť, která není úplně stejná jako paměť obsazená RAM.
  • Nemá žádnou integrovanou podporu pro seskupování, takže nemůže najít největší jmenné prostory.

4) Redis-Audit

Redis-Audit je pravděpodobnostní nástroj, který je užitečný pro získání rychlého přehledu o využití paměti. Poskytuje užitečné informace o skupinách klíčů, jako je celková spotřeba paměti, maximální TTL ve skupině, průměrná doba posledního přístupu, procento klíčů ve skupině, které vyprší, atd. Toto je perfektní nástroj, pokud potřebujete najít nejvíce paměti. hogging key group ve vaší aplikaci.

Instalace a použití Redis-Audit:

Musíte mít již nainstalované Ruby a Bundle. Po instalaci můžete buď naklonovat úložiště Redis-Audit do složky, nebo stáhnout zip a rozbalit jej do složky. Z této složky spusťte `bundle install` pro dokončení instalace.

Použití je docela jednoduché:z příkazového řádku spusťte ` redis-audit.rb hostname [port] [password] [dbnum] [sample_size]`

Pros Redis-Audit:

  • Umožňuje definovat vlastní regulární výraz pro seskupení klíčového prostoru/předpony.
  • Funguje na všech verzích Redis.
  • Pokud je velikost vzorku větší než skutečný počet klíčů, projde všemi klíči. Na druhou stranu tato operace používá klávesy *, spíše než skenování – možná blokování dalších operací.

Nevýhody Redis-Audit:

  • Používá příkaz DEBUG OBJECT (nedostupný v ElastiCache); v důsledku toho hlásí serializovanou velikost – která se liší od skutečné velikosti obsazené RAM.
  • Výstup není snadné rychle analyzovat, protože není tabulkový.

5) Redis Toolkit

Redis Toolkit je jednoduché monitorovací řešení, které lze použít k analýze dvou klíčových metrik:návštěvnosti a spotřeby paměti. Projekt je pravidelně aktualizován kvůli opravám chyb, ale nemá komunitní podporu pro některé ze známějších nástrojů.

Instalace a použití sady nástrojů Redis:

V systému musíte mít nainstalovaný Docker. Poté naklonujte úložiště GitHub (nebo si jej stáhněte jako zip a rozbalte do složky). Z této složky je instalace stejně jednoduchá jako spuštění `./redis-toolkit install`.

Použití je čistě prostřednictvím příkazového řádku, prostřednictvím řady jednoduchých příkazů.

  • Zahájení sledování návštěvnosti:./redis-toolkit monitor
  • Přehled návštěvnosti:./redis-toolkit report -name NAME -type hitrate
  • Zastavení sledování návštěvnosti:./redis-toolkit stop
  • Vytvoření souboru výpisu v místním systému:./redis-toolkit dump
  • Nahlášení využití paměti:./redis-toolkit report -type memory -name NAME

Výhody Redis Toolkit:

  • Snadno srozumitelné rozhraní, které vám poskytne přesné informace, které potřebujete.
  • Můžete seskupit předpony na jakoukoli úroveň, která je pro vás užitečná (takže pokud zvolíte a:b:1 a a:c:1, budou se počítat jako a:* nebo samostatně) .
  • Funguje na všech verzích Redis; nevyžaduje přístup k privilegovaným příkazům, jako je DEBUG OBJECT.
  • Dobře zdokumentováno.

Nevýhody sady nástrojů Redis:

  • Analýza paměti není aktivní; protože funguje na serializovaném výpisu paměti, hlášené využití paměti se nebude rovnat skutečné spotřebě RAM.
  • Na počítači, kde běží Redis Toolkit, je třeba vytvořit výpis. Pokud máte vzdálenou instanci Redis, může to chvíli trvat.
  • Sledování četnosti přístupů využívá příkaz MONITOR k zachycení všech příkazů, které byly spuštěny na serveru. To může snížit výkon a představuje možné bezpečnostní riziko ve výrobě.
  • Míra návštěvnosti se vypočítá jako |GET| / (|GET| + |SET|). Pokud se tedy hodnota často mění, její četnost návštěv bude nižší, i když nikdy nedošlo k žádné skutečné chybě mezipaměti.

6) Sklizeň

Toto je pravděpodobnostní vzorkovací nástroj, který lze použít k identifikaci 10 největších jmenných prostorů/prefixů z hlediska počtu klíčů. Je to jeden z nejnovějších nástrojů a na GitHubu nezaznamenal příliš velkou trakci. Ale pokud jste začátečník v Redis a chcete zjistit, jaký druh dat aplikace zahlcuje vaši instanci, nemůžete získat nic jednoduššího než Harvest.

Instalace a použití Harvest:

Toto je ke stažení jako obrázek Dockeru. Jakmile je obrázek připraven, můžete nástroj spustit pomocí příkazu ‚docker run –link redis:redis -it –rm 31z4/harvest redis://redis-URL‘ z CLI.

Výhody sklizně:

  • Funguje na živých datech.
  • Použije příkaz „využití paměti“ k získání informací o velikosti; proto:
    • Poskytuje přesné informace o velikosti (spíše než serializovanou velikost).
    • Nevyžaduje přístup k příkazu DEBUG OBJECT.
  • Vaše jmenné prostory nemusí být ohraničeny:(dvojtečka). Harvest identifikuje běžné předpony, spíše než závisí na rozpoznávání jmenného prostoru založeného na regulárních výrazech.

Nevýhody sklizně:

  • Je to poník na jeden trik – je těžké jej přizpůsobit pro jakýkoli jiný případ použití.
  • Nástroj funguje pouze s Redis v4.0 a vyšší.
  • Minimální dokumentace.

Omezení bezplatných nástrojů

I když jsme zjistili, že tyto nástroje jsou velmi užitečné pro ladění problémů s pamětí našich instancí Redis, měli byste si být vědomi omezení těchto bezplatných nástrojů.

Placené nástroje mají téměř vždy nějaký druh vizualizace dat, který není k dispozici u žádného z nástrojů, které jsme auditovali. Nejlepší, co získáte, je výstup CSV, který můžete vizualizovat pomocí jiných nástrojů FOSS a mnoho nástrojů tuto možnost ani nemá. To znamená strmou křivku učení, zejména pro začínající uživatele Redis. Pokud pravděpodobně provádíte analýzu paměti často, mohlo by být užitečné podívat se na placené nástroje, které poskytují dobrou vizualizaci.

Dalším omezením je možnost ukládat historické informace. V souladu s obecnou *nix filozofií vytváření malých nástrojů, které dělají jen jednu věc, ale dělají to dobře, se tyto nástroje jen zřídka pouštějí do monitorovacího prostoru. Dokonce ani graf spotřeby paměti v průběhu času a mnozí ani neumí analyzovat živá data.

Sečteno a podtrženo

Jeden jediný nástroj pravděpodobně nebude stačit pro všechny vaše potřeby, ale jsou to docela skvělé zbraně, které můžete mít ve svém arzenálu, ve spojení s možnostmi monitorování poskytované řešeními DBaaS, jako je hosting ScaleGrid pro Redis™*! Chcete-li se dozvědět více o skvělých nástrojích dostupných s našimi plně spravovanými hostingovými službami pro Redis™, podívejte se na naši stránku ScaleGrid pro Redis™ by Plan.


  1. Jak provedu ekvivalent SQL Join v MongoDB?

  2. Nové funkce pro správu záloh a zabezpečení pro MySQL a PostgreSQL:ClusterControl Release 1.6.2

  3. Mohu serializovat objekt instance Ruby Digest::SHA1?

  4. převod databáze z mysql na mongoDb