sql >> Databasteknik >  >> NoSQL >> Redis

Hur avgör man Redis minnesläcka?

Här är några källor till "dold" minnesförbrukning i Redis:

  • Marc nämnde redan buffertarna som underhålls av befälhavaren för att mata slaven. Om en slav släpar efter sin master (eftersom den körs på en långsammare box till exempel), så kommer en del minne att förbrukas på mastern.

  • när långvariga kommandon upptäcks loggar Redis dem i SLOWLOG-området, vilket tar lite minne. Du kanske vill använda kommandot SLOWLOG LEN för att kontrollera antalet poster du har här.

  • kommunikationsbuffertar kan också ta minne. Såvitt jag minns, med gamla versioner av Redis (och 2.4 är ganska gammal - du borde verkligen uppgradera), var den obegränsad, vilket innebär att om du överför ett stort objekt vid en punkt kommer kommunikationsbufferten som är kopplad till denna klientanslutning att växa och aldrig krympa. Om det är många kunder som ibland hanterar stora föremål kan det vara en möjlig förklaring. Om du använder kommandon som hämtar mycket stora data från Redis (i ett slag) kan det också vara en förklaring. Till exempel kommer ett enkelt KEYS *-kommando som används på en Redis-server som lagrar miljontals nycklar att förbruka en betydande mängd minne.

Du nämnde att du har objekt så stora som 25 MB. Du har 404 klientanslutningar, om var och en av dem behöver komma åt sådana objekt vid en tidpunkt kommer den att förbruka 10 GB minne.




  1. CDH 6.2 Release:Vad är nytt i HBase

  2. Toppmodern databashantering:ClusterControl - Guiden

  3. Kan inte ansluta till Mongo Cloud mongodb Database i Golang på Ubuntu

  4. Redis klientbiblioteksrekommendationer för användning från Scala