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.
- Minnestryck på Redis-servern
- Hög processoranvändning eller serverbelastning
- Tidskrävande kommandon
- Bandbreddsbegränsning på serversidan
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:
- Konfigurera en minnesprincip och ange förfallotider för dina nycklar. Den här principen kanske inte räcker om du har fragmentering.
- Konfigurera ett maxmemory-reserved-värde som är tillräckligt stort för att kompensera för minnesfragmentering.
- Dela upp dina stora cachelagrade objekt i mindre relaterade objekt.
- 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.
- Skala till en större cachestorlek med mer minneskapacitet. Mer information finns i vanliga Azure Cache for Redis vanliga frågor och svar om planering.
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:
- Ändra beteendet för klientsamtal för att minska nätverksefterfrågan.
- Skapa aviseringar för mått såsom cacheläsning och cacheskrivning så att du tidigt varnas om potentiella problem.
- Skala till en större cachestorlek med mer kapacitet för nätverksbandbredd. Mer information finns i vanliga Azure Cache for Redis vanliga frågor och svar om planering.