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

Jak určit únik paměti Redis?

Zde jsou některé zdroje "skryté" spotřeby paměti v Redis:

  • Marc se již zmínil o vyrovnávací paměti udržované pánem, aby krmil otroka. Pokud slave zaostává za svým masterem (protože například běží na pomalejším boxu), pak bude část paměti spotřebována na masteru.

  • když jsou detekovány dlouho běžící příkazy, Redis je zaznamená do oblasti SLOWLOG, což zabere trochu paměti. Možná budete chtít použít příkaz SLOWLOG LEN ke kontrole počtu záznamů, které zde máte.

  • komunikační vyrovnávací paměti mohou také zabírat paměť. Pokud si pamatuji, se starými verzemi Redis (a 2.4 je docela stará - měli byste opravdu upgradovat) to bylo neomezené, což znamená, že pokud přenesete velký objekt v určitém bodě, komunikační vyrovnávací paměť spojená s tímto klientským připojením se zvětší. a nikdy se nezmenšovat. Pokud existuje mnoho klientů, kteří se příležitostně zabývají velkými předměty, mohlo by to být možné vysvětlení. Pokud používáte příkazy pro načítání velmi velkých dat z Redis (na jeden záběr), může to být také vysvětlení. Například jednoduchý příkaz KEYS * použitý na serveru Redis, který ukládá miliony klíčů, spotřebuje značné množství paměti.

Zmínil jste, že máte objekty velké až 25 MB. Máte 404 klientských připojení, pokud každé z nich potřebuje v určitém okamžiku přistupovat k takovým objektům, spotřebuje to 10 GB paměti.




  1. MongoDB jako služba fronty?

  2. Úvahy o správě MongoDB

  3. Jak povolit protokolování pro Mongoose a ovladač MongoDB Node.JS

  4. Mongoose find(), jak získat přístup k výsledným dokumentům?