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

I det här avsnittet beskrivs felsökning av problem som uppstår på grund av ett villkor Azure Cache for Redis en eller flera virtuella datorer som är värdar 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.

Minnestryck på Redis-servern

Minnestryck på serversidan leder till alla typer av prestandaproblem som kan fördröja bearbetningen av begäranden. När minnestrycket når kan systemet sidinläsa data till disk. Den här sidan gör att systemet blir betydligt långsammare. Det finns flera möjliga orsaker till det här minnestrycket:

  • Cachen är fylld med data nära sin maximala kapacitet.
  • Redis-servern har hög minnesfragmentering. Den här fragmenteringen orsakas oftast av att stora objekt lagras eftersom Redis är optimerat för små objekt.

Redis visar två statistik via info-kommandot som kan hjälpa dig att identifiera det här problemet: "used_memory" och "used_memory_rss". Du kan visa de här måtten med hjälp av portalen.

Det finns flera ändringar du kan göra för att hålla minnesanvändningen felfri:

Hög processoranvändning eller serverbelastning

En hög serverbelastning eller CPU-användning innebär att servern inte kan bearbeta begäranden inom rimlig tid. Servern kan vara långsam att svara och kan inte hålla reda på förfrågningsfrekvensen.

Övervaka mått som CPU- eller serverbelastning. Håll utkik efter toppar i CPU-användning som motsvarar tidsgränser.

Det finns flera ändringar du kan göra för att minska hög serverbelastning:

  • Undersök vad som orsakar CPU-toppar, till exempel långvariga kommandon som anges nedan eller sidfel på grund av hög minnesbelastning.
  • Skapa aviseringar för mått som CPU- eller serverbelastning för att tidigt meddelas om potentiell påverkan.
  • Skala ut till fler shards för att fördela belastningen över flera Redis-processer eller skala upp till en större cachestorlek med fler CPU-kärnor. Mer information finns i vanliga Azure Cache for Redis vanliga frågor och svar om planering.

Tidskrävande kommandon

Vissa Redis-kommandon är mer kostsamma att köra än andra. Dokumentationen om Redis-kommandon visar tidskomplexiteten för varje kommando. Eftersom Redis-kommandobearbetning är entrådig blockerar ett kommando som tar tid att köra alla andra som kommer efter det. Granska de kommandon som du utfärdar till Redis-servern för att förstå deras prestandapåverkan. Till exempel används kommandot KEYS ofta utan att veta att det är en O(N)-åtgärd. Du kan undvika NYCKLAR genom att använda GENOMSÖKNING för att minska CPU-toppar.

Med hjälp av KOMMANDOT SLOWLOG GET kan du mäta dyra kommandon som körs mot servern.

Bandbreddsbegränsning på serversidan

Olika cachestorlekar har olika kapacitet för nätverksbandbredd. Om servern överskrider den tillgängliga bandbredden skickas inte data till klienten lika snabbt. Klienters begäranden kan få time out eftersom servern inte kan skicka data till klienten tillräckligt snabbt.

Måtten "Cacheläsning" och "Cacheskrivning" kan användas för att se hur mycket bandbredd på serversidan som används. Du kan visa de här måtten i portalen.

Så här åtgärdar du situationer där användningen av nätverksbandbredd är nära maximal kapacitet:

Ytterligare information