Serverproblemen met Azure Cache voor Redis oplossen
In deze sectie worden problemen besproken die worden veroorzaakt door omstandigheden op een Azure Cache voor Redis server of een van de virtuele machines die als host fungeren.
- Hoge serverbelasting
- Hoog geheugengebruik
- Langlopende opdrachten
- Bandbreedtebeperking aan serverzijde
Notitie
Verschillende stappen voor probleemoplossing in deze handleiding bevatten instructies voor het uitvoeren van Redis-opdrachten en het bewaken van verschillende metrische prestatiegegevens. Zie de artikelen in de sectie Aanvullende informatie voor meer informatie en instructies.
Hoge serverbelasting
Hoge serverbelasting betekent dat de Redis-server bezet is en aanvragen niet kan bijhouden, wat tot time-outs kan leiden. Controleer de metrische gegevens voor serverbelasting in uw cache door Bewaking te selecteren in het menu Resource aan de linkerkant. U ziet de grafiek Serverbelasting in het werkvenster onder Inzichten. Of voeg een metrische set toe aan Serverbelasting onder Metrische gegevens.
Hier volgen enkele opties die u kunt overwegen voor hoge serverbelasting.
Omhoog of uitschalen
Schaal uit om meer shards toe te voegen, zodat de belasting wordt verdeeld over meerdere Redis-processen. Overweeg ook om omhoog te schalen naar een grotere cachegrootte met meer CPU-kernen. Zie veelgestelde vragen over Azure Cache voor Redis planning voor meer informatie.
Snelle wijzigingen in het aantal clientverbindingen
Zie Pieken in clientverbindingen voorkomen voor meer informatie.
Langlopende of dure opdrachten
Deze sectie is verplaatst. Zie Langlopende opdrachten voor meer informatie.
Schalen
Schaalbewerkingen zijn CPU- en geheugenintensief, omdat dit kan leiden tot het verplaatsen van gegevens op knooppunten en het wijzigen van de clustertopologie. Zie Schalen voor meer informatie.
Serveronderhoud
Als uw Azure Cache voor Redis een failover heeft ondergaan, worden alle clientverbindingen van het knooppunt dat is uitgevallen, overgedragen naar het knooppunt dat nog wordt uitgevoerd. De serverbelasting kan pieken vanwege de toegenomen verbindingen. U kunt proberen uw clienttoepassingen opnieuw op te starten, zodat alle clientverbindingen opnieuw worden gemaakt en opnieuw worden verdeeld over 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 volgen enkele mogelijke oorzaken van geheugenbelasting:
- De cache is gevuld met gegevens in de buurt van de maximale capaciteit
- Redis-server ziet een hoge geheugenfragmentatie
Fragmentatie wordt waarschijnlijk veroorzaakt wanneer een belastingspatroon gegevens met een grote variatie in grootte opslaat. Fragmentatie kan bijvoorbeeld optreden wanneer gegevens zijn verspreid over 1 kB en 1 MB. Wanneer een sleutel van 1 kB uit het bestaande geheugen wordt verwijderd, past er geen sleutel van 1 MB in, waardoor fragmentatie wordt veroorzaakt. Als de sleutel van 1 MB wordt verwijderd en de sleutel van 1,5 MB wordt toegevoegd, past deze ook niet in het bestaande opnieuw vrijgemaakte geheugen. Dit veroorzaakt 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, is er sprake van fragmentatie in het geheugen. De fragmentatie kan problemen veroorzaken wanneer:
- Geheugengebruik ligt dicht bij de maximale geheugenlimiet voor de cache, of
UsedMemory_RSS
is hoger dan de limiet voor maximaal geheugen, wat kan leiden tot paginafouten in het geheugen.
Als een cache gefragmenteerd is en onder hoge geheugendruk wordt uitgevoerd, voert het systeem een failover uit om het RSS-geheugen (Resident Set Size) 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 bekijken via de portal.
Controleer of de maxmemory-reserved
waarden en maxfragmentationmemory-reserved
juist zijn ingesteld.
Er zijn verschillende mogelijke wijzigingen die u kunt aanbrengen om het geheugengebruik in balans te houden:
- Configureer een geheugenbeleid en stel verlooptijden in voor uw sleutels. Dit beleid is mogelijk niet voldoende als u te maken hebt met fragmentatie.
- Configureer een waarde voor maxmemory-reserved die groot genoeg is om geheugenfragmentatie te compenseren.
- Maak waarschuwingen voor metrische gegevens, zoals het gebruikte geheugen, zodat u tijdig een melding krijgt over mogelijke gevolgen.
- Schaal naar een grotere cache met meer geheugencapaciteit. Zie veelgestelde vragen over Azure Cache voor Redis planning voor meer informatie.
Zie Best practices voor geheugenbeheer voor aanbevelingen over geheugenbeheer.
Langlopende opdrachten
Deze sectie is verplaatst. Zie Langlopende opdrachten voor meer informatie.
Bandbreedtebeperking aan serverzijde
Deze sectie is verplaatst. Zie Netwerkbandbreedtebeperking voor meer informatie.