Dela via


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.

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:

  1. Minnesanvändningen ligger nära den maximala minnesgränsen för cacheminnet, eller
  2. 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:

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.

Ytterligare information