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

redis paměti a cpu špičky

Z dalšího experimentování s tím a čtení o redis persistenci si myslím, že lze učinit následující pozorování:

  • Při použití RDB (výchozí nastavení) se redis při každém save rozvětví spouští se operace, která je (ve výchozím nastavení) nastavena na každých 15 minut minimálně . Když se provádí více zápisů do Redis, pak jsou zápisy RDB tak časté jako jednou za 60 sekund .
  • Každá větev bude používat alokaci paměti "copy-on-write", což znamená, že i když se paměť ve skutečnosti nezdvojnásobí, objeví se to u nástrojů jako ps , htop a podobně.
  • Fork sám o sobě může být poměrně náročná operace na CPU, zejména na virtuálních hostitelích založených na xenu (což je to, co v současnosti používáme).
  • Zdá se, že operace zápisu úplně přepisuje existující soubor RDB. Nezapisuje pouze změny, ale spíše vypisuje celé datovou sadu na disk.

Takže na skromném virtuálním hostiteli se 4Gb RAM a datovým souborem kolem 750Mb (v době, kdy jsem otázku vkládal), to začíná být poněkud „drahé“. Pozorovali jsme ty skokové nárůsty CPU/paměti, stejně jako zvýšený IO, a to i při poměrně mírném zatížení / využití redis.

Takže abych odpověděl na svou vlastní otázku – zdá se, že toto je „očekávané“ chování.

Pokud jde o zlepšení situace, rozhodli jsme se přepnout naši konfiguraci na kombinaci RDB a AOF. Zdá se, že AOF (Append Only File) zapisuje pouze změny na disk. Stále můžete (a měli byste) nakonfigurovat soubor AOF tak, aby přepisoval (pomocí auto-aof-rewrite-percentage a auto-aof-rewrite-min-size nastavení). Pro snímky je také vhodné stále používat RDB. V této konfiguraci však pravděpodobně můžete provádět úplné přepisy / snímky méně často a stále si zachováte docela dobrý výkon a ještě lepší trvanlivost.



  1. Zásuvka modulu nebyla nalezena lua

  2. MongoDB:najděte hodnotu v poli s více kritérii

  3. spring-redis se nemůže připojit ke vzdálenému hostiteli

  4. Změna výchozího oprávnění k souboru na redis dump