Felsöka problem på Azure Cache for Redis-serversidan

I det här avsnittet beskrivs felsökning av problem som orsakas av villkor på en Azure Cache for Redis-server eller någon av de virtuella datorer som är värd för den.

Anteckning

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å menyn Resurs till vänster. Du ser diagrammet Serverinläsning i arbetsfönstret under Insikter. Du kan också lägga till en måttuppsättning till Server load (Serverbelastning) under Metrics (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 Undvika toppar i klientanslutningen.

Tidskrävande eller dyra kommandon

Det här avsnittet har flyttats. Mer information finns i Kommandon som körs länge.

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 omfördelas 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 stor variation i storlek. Fragmentering kan till exempel 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 nyckel på 1 MB inte få plats i den, vilket orsakar 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 outnyttjat 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 utfö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 Kommandon som körs länge.

Bandbreddsbegränsning på serversidan

Det här avsnittet har flyttats. Mer information finns i Begränsning av nätverksbandbredd.

Ytterligare information