Problemen met Azure Managed Redis (preview) aan serverzijde oplossen
In deze sectie worden problemen besproken die worden veroorzaakt door voorwaarden op een Azure Managed Redis-server (preview) of een van de virtuele machines die deze hosten.
Notitie
Verschillende van de stappen voor probleemoplossing in deze handleiding bevatten instructies voor het uitvoeren van Redis-opdrachten en het bewaken van verschillende prestatiegegevens. Zie de artikelen in de sectie Aanvullende informatie voor meer informatie en instructies.
Hoog CPU-gebruik
Hoge CPU betekent dat de Redis-server bezet is en aanvragen niet kan bijhouden, wat tot time-outs kan leiden. Controleer de metrische waarde CPU van de cache door Bewaking te selecteren in het menu Resource links. U ziet de CPU-grafiek in het werkvenster onder Inzichten. U kunt ook een metrische set toevoegen aan CPU onder Metrische gegevens.
Hier volgen enkele opties om rekening mee te houden bij een hoog CPU-gebruik.
Omhoog schalen of naar een hogere prestatielaag gaan
Voor betere prestaties kunt u overwegen om omhoog te schalen naar een grotere cachegrootte met meer CPU-kernen. Zie Prestatielagen voor meer informatie.
Snelle wijzigingen in het aantal clientverbindingen
Zie Pieken in clientverbindingen vermijden voor meer informatie.
Langdurige of dure query's
Zie Langdurige opdrachten voor meer informatie.
Schalen
Schaalbewerkingen zijn CPU- en geheugenintensief, omdat het kan gaan om het verplaatsen van gegevens rond knooppunten en het wijzigen van de clustertopologie. Zie Schaling voor meer informatie.
Serveronderhoud
Als uw Azure Managed Redis een failover heeft ondergaan, worden alle clientverbindingen van het knooppunt dat is uitgevallen overgedragen naar het knooppunt dat nog steeds wordt uitgevoerd. De CPU kan pieken vanwege de toegenomen verbindingen. U kunt proberen uw clienttoepassingen opnieuw op te starten, zodat alle clientverbindingen opnieuw worden gemaakt en opnieuw worden gedistribueerd tussen de twee knooppunten.
Hoog geheugengebruik
Geheugendruk op de server kan leiden tot verschillende prestatieproblemen die de verwerking van aanvragen vertragen. Wanneer u te maken krijgt met geheugendruk, worden gegevens door het systeem naar de schijf doorgegeven, waardoor het systeem aanzienlijk langzamer wordt.
Hier zijn enkele mogelijke oorzaken van geheugendruk:
- De cache is gevuld met gegevens die de maximale capaciteit naderen
- Er is een hoge geheugenfragmentatie in de server van Redis
Fragmentatie wordt waarschijnlijk veroorzaakt wanneer een laadpatroon gegevens met een hoge variatie in grootte opslaat. Fragmentatie kan bijvoorbeeld optreden wanneer gegevens worden verdeeld over 1 kB en 1 MB in grootte. Wanneer een sleutel van 1 kB uit het bestaande geheugen wordt verwijderd, kan een sleutel van 1 MB niet in het geheugen passen, wat fragmentatie veroorzaakt. Als een sleutel van 1 MB wordt verwijderd en een sleutel van 1,5 MB wordt toegevoegd, kan deze op dezelfde manier niet in het bestaande vrijgemaakte geheugen passen. Dit zorgt voor ongebruikt vrij geheugen en resulteert in meer fragmentatie.
Als de used_memory_rss
waarde hoger is dan 1,5 keer de used_memory
metrische waarde, dan is er fragmentatie in het geheugen. De fragmentatie kan problemen veroorzaken wanneer:
- Het gebruik van het geheugen dicht bij de maximale geheugenlimiet voor de cache ligt, of
-
UsedMemory_RSS
hoger is dan de maximale geheugenlimiet, wat mogelijk resulteert in paginafouten in het geheugen.
Als een cache gefragmenteerd is en onder hoge geheugendruk wordt uitgevoerd, voert het systeem een failover uit om te proberen het Resident Set Size (RSS)-geheugen te herstellen.
Redis geeft twee statistieken weer, used_memory
en used_memory_rss
via de opdracht INFO waarmee u dit probleem kunt identificeren. U kunt deze metrische gegevens weergeven met behulp van de portal.
Er zijn verschillende mogelijke wijzigingen die u kunt aanbrengen om het geheugengebruik in balans te houden:
- Een geheugenbeleid configureren en vervaltijden instellen voor uw sleutels. Dit beleid is mogelijk niet voldoende als u te maken hebt met fragmentatie.
- Maak waarschuwingen voor metrische gegevens, zoals het gebruikte geheugen, zodat u tijdig een melding krijgt over mogelijke gevolgen.
- Schaal naar een grotere cachegrootte met meer geheugencapaciteit. Voor meer informatie raadpleegt u de veelgestelde vragen over Azure Managed Redis-planning.
Voor aanbevelingen voor geheugenbeheer raadpleegt u Best practices voor geheugenbeheer.
Langlopende opdrachten
Zie Langdurige opdrachten voor meer informatie.
Bandbreedtebeperking aan serverzijde
Zie Beperking van netwerkbandbreedte voor meer informatie.