Felsöka problem på Azure Cache for Redis-serversidan
I det här avsnittet beskrivs felsökningsproblem som orsakas av villkor på en Azure Cache for Redis-server eller någon av de virtuella datorer som är värdar för den.
- Hög serverbelastning
- Hög minnesanvändning
- Tidskrävande kommandon
- Bandbreddsbegränsning på serversidan
Kommentar
Flera av felsökningsstegen i den här guiden innehåller instruktioner för att köra Redis-kommandon och övervaka olika prestandamått. Mer information och instruktioner finns i artiklarna i avsnittet Ytterligare information .
Hög serverbelastning
Hög serverbelastning innebär att Redis-servern är upptagen och inte hinner med alla begäranden, vilket leder till timeouter. Kontrollera måttet Serverinläsning i cacheminnet genom att välja Övervakning på resursmenyn till vänster. Du ser diagrammet Serverinläsning i arbetsfönstret under Insikter. Du kan också lägga till en måttuppsättning till Serverinläsning under Mått.
Följande är några alternativ att överväga för hög serverbelastning.
Skala upp eller skala ut
Skala ut för att lägga till fler shards så att belastningen distribueras över flera Redis-processer. Överväg också att skala upp till en större cachestorlek med fler CPU-kärnor. Mer information finns i Vanliga frågor och svar om Azure Cache for Redis-planering.
Snabba ändringar i antalet klientanslutningar
Mer information finns i Undvik klientanslutningstoppar.
Tidskrävande eller dyra kommandon
Det här avsnittet har flyttats. Mer information finns i Tidskrävande kommandon.
Skalning
Skalningsåtgärder är processor- och minnesintensiva eftersom det kan innebära att flytta data runt noder och ändra klustertopologi. Mer information finns i Skalning.
Serverunderhåll
Om din Azure Cache for Redis genomgick en redundansväxling överförs alla klientanslutningar från noden som gick ned till den nod som fortfarande körs. Serverbelastningen kan öka på grund av de ökade anslutningarna. Du kan prova att starta om klientprogrammen så att alla klientanslutningar återskapas och distribueras om mellan de två noderna.
Hög minnesanvändning
Minnestryck på servern kan leda till olika prestandaproblem som fördröjer bearbetningen av begäranden. När ett minnestryck uppstår skickar systemet data till disk, vilket gör att systemet blir avsevärt långsammare.
Här är några möjliga orsaker till minnesbelastning:
- Cachen är fylld med data nära dess maximala kapacitet
- Redis-servern ser hög minnesfragmentering
Fragmentering orsakas troligen när ett belastningsmönster lagrar data med hög variation i storlek. Till exempel kan fragmentering inträffa när data sprids över 1 KB och 1 MB i storlek. När en 1 KB-nyckel tas bort från befintligt minne kan en 1 MB-nyckel inte passa in i den och orsaka fragmentering. Om en nyckel på 1 MB tas bort och en nyckel på 1,5 MB läggs till får den inte plats i det befintliga återvunna minnet. Detta orsakar oanvänt ledigt minne och resulterar i mer fragmentering.
Om värdet used_memory_rss
är högre än 1,5 gånger måttet used_memory
finns det fragmentering i minnet. Fragmenteringen kan orsaka problem när:
- Minnesanvändningen ligger nära den maximala minnesgränsen för cacheminnet, eller
UsedMemory_RSS
är högre än maxgränsen för minne, vilket kan leda till sidfel i minnet.
Om en cache är fragmenterad och körs under högt minnestryck gör systemet en redundansväxling för att försöka återställa RSS-minnet (Resident Set Size).
Redis exponerar två statistik, used_memory
och used_memory_rss
, via INFO-kommandot som kan hjälpa dig att identifiera det här problemet. Du kan visa dessa mått med hjälp av portalen.
Kontrollera att maxmemory-reserved
värdena och maxfragmentationmemory-reserved
har angetts på rätt sätt.
Det finns flera ändringar du kan göra för att hålla minnesanvändningen felfri:
- Konfigurera en minnesprincip och ange förfallotider för dina nycklar. Den här principen kanske inte räcker om du har fragmentering.
- Konfigurera ett maxmemory-reserverat värde som är tillräckligt stort för att kompensera för minnesfragmentering.
- Skapa aviseringar för mått, till exempel använt minne, så att du i god tid informeras om potentiell påverkan.
- Skala till en större cachestorlek med mer minneskapacitet. Mer information finns i Vanliga frågor och svar om Azure Cache for Redis-planering.
Rekommendationer om minneshantering finns i Metodtips för minneshantering.
Tidskrävande kommandon
Det här avsnittet har flyttats. Mer information finns i Tidskrävande kommandon.
Bandbreddsbegränsning på serversidan
Det här avsnittet har flyttats. Mer information finns i Begränsning av nätverksbandbredd.