Felsöka problem på Azure Cache for Redis-serversidanTroubleshoot Azure Cache for Redis server-side issues

I det här avsnittet beskrivs fel söknings problem som uppstår på grund av ett villkor i en Azure-cache för Redis eller för den eller de virtuella datorer som är värd för det.This section discusses troubleshooting issues that occur because of a condition on an Azure Cache for Redis or the virtual machine(s) hosting it.

Anteckning

Flera av fel söknings stegen i den här hand boken innehåller instruktioner för att köra Redis-kommandon och övervaka olika prestanda mått.Several of the troubleshooting steps in this guide include instructions to run Redis commands and monitor various performance metrics. Mer information och instruktioner finns i artiklarna i avsnittet Ytterligare information .For more information and instructions, see the articles in the Additional information section.

Minnestryck på Redis-serverMemory pressure on Redis server

Minnes belastningen på Server sidan leder till alla typer av prestanda problem som kan fördröja bearbetning av begär Anden.Memory pressure on the server side leads to all kinds of performance problems that can delay processing of requests. När minnes trycks träffar kan systemet använda data på disk.When memory pressure hits, the system may page data to disk. Den här sidfel gör att systemet saktas ned avsevärt.This page faulting causes the system to slow down significantly. Det finns flera möjliga orsaker till det här minnes trycket:There are several possible causes of this memory pressure:

  • Cachen fylls med data nära sin maximala kapacitet.The cache is filled with data near its maximum capacity.
  • Redis ser högt fragmentering i minnet.Redis is seeing high memory fragmentation. Fragmenteringen orsakas oftast av att stora objekt lagras eftersom Redis är optimerat för små objekt.This fragmentation is most often caused by storing large objects since Redis is optimized for small objects.

Redis exponerar två statistik via kommandot info som kan hjälpa dig att identifiera det här problemet: "used_memory" och "used_memory_rss".Redis exposes two stats through the INFO command that can help you identify this issue: "used_memory" and "used_memory_rss". Du kan Visa dessa mått med hjälp av portalen.You can view these metrics using the portal.

Det finns flera ändringar du kan göra för att hålla minnesanvändningen felfri:There are several possible changes you can make to help keep memory usage healthy:

  • Konfigurera en minnes princip och ange förfallo tider för dina nycklar.Configure a memory policy and set expiration times on your keys. Den här principen kanske inte räcker om du har fragmentering.This policy may not be sufficient if you have fragmentation.
  • Konfigurera ett maxmemory-reserverat värde som är tillräckligt stort för att kompensera för fragmentering av minne.Configure a maxmemory-reserved value that is large enough to compensate for memory fragmentation.
  • Dela upp dina stora cachelagrade objekt i mindre relaterade objekt.Break up your large cached objects into smaller related objects.
  • Skapa aviseringar för mått, till exempel använt minne, så att du i god tid informeras om potentiell påverkan.Create alerts on metrics like used memory to be notified early about potential impacts.
  • Skala till en större cachestorlek med mer minnes kapacitet.Scale to a larger cache size with more memory capacity.

Hög CPU-användning eller server belastningHigh CPU usage or server load

En hög server belastning eller CPU-användning innebär att servern inte kan bearbeta begär Anden inom rimlig tid.A high server load or CPU usage means the server can't process requests in a timely fashion. Servern kan vara långsam att svara och kan inte fortsätta med begär ande frekvenser.The server may be slow to respond and unable to keep up with request rates.

Övervaka mått som CPU eller server belastning.Monitor metrics such as CPU or server load. Titta efter toppar i CPU-användning som motsvarar tids gränser.Watch for spikes in CPU usage that correspond with timeouts.

Det finns flera ändringar som du kan göra för att minimera hög server belastning:There are several changes you can make to mitigate high server load:

  • Undersök vad som orsakar CPU-toppar, till exempel långvariga kommandon som anges nedan eller sidfel på grund av hög minnes belastning.Investigate what is causing CPU spikes such as long-running commands noted below or page faulting because of high memory pressure.
  • Skapa aviseringar för mått som processor-eller server belastning för att bli informerad om potentiella påverkan.Create alerts on metrics like CPU or server load to be notified early about potential impacts.
  • Skala till en större cachestorlek med mer processor kapacitet.Scale to a larger cache size with more CPU capacity.

Tidskrävande kommandonLong-running commands

Vissa redis-kommandon är dyrare att köra än andra.Some Redis commands are more expensive to execute than others. I dokumentationen för Redis-kommandon visas tids komplexiteten för varje kommando.The Redis commands documentation shows the time complexity of each command. Eftersom bearbetning av Redis-kommandona är en enkel tråd, kommer ett kommando som tar tid att köras att blockera alla andra som kommer efter det.Because Redis command processing is single-threaded, a command that takes time to run will block all others that come after it. Du bör granska de kommandon som du utfärdar till Redis-servern för att förstå deras prestanda påverkan.You should review the commands that you're issuing to your Redis server to understand their performance impacts. Till exempel används kommandot nycklar ofta utan att du vet att det är en O (N)-åtgärd.For instance, the KEYS command is often used without knowing that it's an O(N) operation. Du kan undvika nycklar med hjälp av Sök funktionen för att minska processor toppar.You can avoid KEYS by using SCAN to reduce CPU spikes.

Med hjälp av kommandot SLOWLOG kan du mäta dyra kommandon som körs mot servern.Using the SLOWLOG command, you can measure expensive commands being executed against the server.

Bandbreddsbegränsning på serversidanServer-side bandwidth limitation

Olika cachestorlek har olika bandbredds kapacitet för nätverk.Different cache sizes have different network bandwidth capacities. Om servern överskrider den tillgängliga bandbredden så skickas inte data till klienten så snabbt.If the server exceeds the available bandwidth, then data won't be sent to the client as quickly. Förfrågningar om klienter kan ha nått tids gränsen på grund av att servern inte kan skicka data till klienten tillräckligt snabbt.Clients requests could time out because the server can't push data to the client fast enough.

Måtten "cache Read" och "cache Write" kan användas för att se hur mycket bandbredd som används på Server sidan.The "Cache Read" and "Cache Write" metrics can be used to see how much server-side bandwidth is being used. Du kan Visa dessa mått i portalen.You can view these metrics in the portal.

För att undvika situationer där bandbredds användningen för nätverk är nära maximal kapacitet:To mitigate situations where network bandwidth usage is close to maximum capacity:

  • Ändra klientens anrops beteende för att minska nätverks behovet.Change client call behavior to reduce network demand.
  • Skapa aviseringar för mått såsom cacheläsning och cacheskrivning så att du tidigt varnas om potentiella problem.Create alerts on metrics like cache read or cache write to be notified early about potential impacts.
  • Skala till en större cachestorlek med mer bandbredds kapacitet för nätverk.Scale to a larger cache size with more network bandwidth capacity.

Ytterligare informationAdditional information