Felsöka serverproblem med Azure Managed Redis (förhandsversion)
I det här avsnittet beskrivs felsökningsproblem som orsakas av förhållanden på en Azure Managed Redis-server (förhandsversion) eller någon av de virtuella datorer som är värdar för den.
- Hög processoranvändning
- Hög minnesanvändning
- Tidskrävande kommandon
- Bandbreddsbegränsning på serversidan
Kommentar
Flera av felsökningsstegen i denna guide innehåller anvisningar 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 CPU
Hög CPU-användning innebär att Redis-servern är upptagen och inte hinner slutföra alla förfrågningar, vilket leder till timeout. Kontrollera måttet CPU i cacheminnet genom att välja Övervakning på menyn Resurs till vänster. Du hittar CPU-grafen i arbetsfönstret under Insikter. Alternativt kan du lägga till en måttuppsättning i CPU under Mått.
Följande är några alternativ att överväga vid hög CPU-användning.
Skala upp eller växla till en högre prestandanivå
För att uppnå högre prestanda bör du överväga att skala upp till en större cachestorlek med fler CPU-kärnor. Mer information finns i Prestandanivåer.
Snabba förändringar av antalet klientanslutningar
Mer information finns i Undvika toppar i klientanslutningar.
Tidskrävande eller omfattande kommandon
Mer information finns i Tidskrävande kommandon.
Skalning
Skalningsåtgärder är processor- och minnesintensiva eftersom de kan involvera att flytta data runt noder och ändra klustertopologin. Mer information finns i Skalning.
Serverunderhåll
Om din Azure Managed Redis har genomgått en redundansväxling överförs alla klientanslutningar från noden som gick ned till den nod som fortfarande körs. Processoranvändningen kan nå en topp på grund av det ökade antalet anslutningar. 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 följer några möjliga orsaker till högt minnestryck:
- Cacheminnet är fyllt med data nära sin maximala kapacitet
- Redis-servern har hög minnesfragmentering
Fragmentering uppstår sannolikt när ett belastningsmönster lagrar data med hög variation i storlek. Fragmentering kan till exempel uppstå när data sprids mellan 1 KB och 1 MB i storlek. När en 1 KB-nyckel tas bort från ett befintligt minne passar en 1 MB-nyckel inte in i det och kan 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 leder till oanvänt ledigt minne och orsakar mer fragmentering.
Om värdet used_memory_rss
värdet är högre än 1,5 gånger used_memory
måttet är det fragmentering i minnet. Fragmenteringen kan orsaka problem när:
- Minnesanvändningen närmar sig cacheminnets maximala minnesgräns, eller
-
UsedMemory_RSS
är högre än den maximala minnesgränsen, vilket potentiellt kan resultera i sidfel i minnet.
Om ett cacheminne är fragmenteras och körs under högt minnestryck, utför systemet en redundansväxling för att försöka återvinna RSS-minnet (Resident Set Size).
Redis tillhandahåller två statistikvärden, used_memory
och used_memory_rss
via kommandot INFO som kan hjälpa dig att identifiera det här problemet. Du kan visa dessa mått med hjälp av portalen.
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.
- 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. För ytterligare information, se Vanliga frågor och svar om Azure Managed Redis-planering.
Rekommendationer om minneshantering finns i Metodtips för minneshantering.
Tidskrävande kommandon
Mer information finns i Tidskrävande kommandon.
Bandbreddsbegränsning på serversidan
Mer information finns i Begränsning av nätverksbandbredd.