Risolvere i problemi del server della cache di Azure per Redis
Questa sezione illustra la risoluzione dei problemi causati da condizioni in un server di Cache di Azure per Redis o in una delle macchine virtuali che lo ospitano.
- Carico elevato del server
- Uso elevato della memoria
- Comandi a esecuzione prolungata
- Limitazione della larghezza di banda lato server
Nota
Diversi passaggi per la risoluzione dei problemi illustrati in questa guida includono istruzioni per eseguire comandi di Redis e monitorare svariate metriche delle prestazioni. Per altre informazioni e istruzioni, vedere gli articoli della sezione Informazioni aggiuntive .
Carico elevato del server
Un carico elevato del server significa che il server Redis è occupato e non è in grado di mantenere il passo con le richieste, il che causa i timeout. Controllare la metrica Carico server nella cache selezionando Monitoraggio dal menu Risorsa a sinistra. Il grafico Carico server viene visualizzato nel riquadro di lavoro in Informazioni dettagliate. In alternativa, aggiungere un set di metriche a Carico server in Metriche.
Di seguito sono riportate alcune opzioni da considerare per un carico server elevato.
Aumentare le istanze
Aumentare il numero di istanze per aggiungere altre partizioni, in modo che il carico venga distribuito tra più processi Redis. Valutare anche la possibilità di aumentare le dimensioni della cache con più core CPU. Per altre informazioni, vedere Domande frequenti sulla pianificazione di Cache Redis di Azure.
Cambiamenti rapidi nel numero di connessioni client
Per altre informazioni, vedere Evitare picchi di connessione client.
Comandi a esecuzione prolungata o costosi
Questa sezione è stata spostata. Per altre informazioni, vedere Comandi a esecuzione prolungata.
Scalabilità
Le operazioni di ridimensionamento implicano un uso intensivo della CPU e della memoria perché potrebbero comportare lo spostamento dei dati nei nodi e la modifica della topologia del cluster. Per altre informazioni, vedere Ridimensionamento.
Manutenzione del server
Se Cache di Azure per Redis ha subito un failover, tutte le connessioni client dal nodo inattivo vengono trasferite al nodo ancora in esecuzione. Il carico del server potrebbe aumentare a causa delle connessioni aumentate. È possibile provare a riavviare le applicazioni client in modo che tutte le connessioni client vengano ricreate e ridistribuite tra i due nodi.
Uso elevato della memoria
L'utilizzo elevato della memoria nel server può causare diversi tipi di problemi di prestazioni che possono ritardare l'elaborazione delle richieste. Quando si verifica un utilizzo elevato di memoria, il sistema esegue il paging dei dati su disco, il che comporta rallentamenti significativi.
Ecco alcune possibili cause di utilizzo elevato della memoria:
- La cache viene riempita di dati quasi fino alla rispettiva capacità massima
- Il server Redis riscontra una frammentazione elevata della memoria
È probabile che la frammentazione venga causata quando un modello di carico archivia i dati con una variazione elevata delle dimensioni. Ad esempio, la frammentazione può verificarsi quando i dati vengono distribuiti tra 1 kB e 1 MB di dimensioni. Quando una chiave da 1 KB viene eliminata dalla memoria esistente, una chiave da 1 MB non può rientrare in essa causando la frammentazione. Analogamente, se viene eliminata una chiave da 1 MB e viene aggiunta una chiave da 1,5 MB, non può rientrare nella memoria recuperata esistente. Ciò comporta un inutilizzo della memoria libera e una maggiore frammentazione.
Se il valore used_memory_rss
è superiore a 1,5 volte la metrica used_memory
, è presente una frammentazione in memoria. La frammentazione può causare problemi quando:
- L'utilizzo della memoria è vicino al limite massimo di memoria per la cache o
UsedMemory_RSS
è superiore al limite massimo di memoria, causando potenzialmente errori di pagina in memoria.
Se una cache è frammentata ed è in esecuzione con un utilizzo elevato della memoria, il sistema esegue un failover per provare a recuperare la memoria RSS (Resident Set Size).
Redis espone due statistiche, used_memory
e used_memory_rss
, tramite il comando INFO che consente di identificare questo problema. È possibile visualizzare queste metriche usando il portale.
Verificare che i valori maxmemory-reserved
e maxfragmentationmemory-reserved
siano impostati in modo appropriato.
È possibile apportare diverse modifiche che consentono di mantenere integro l'utilizzo della memoria:
- Configurare un criterio per la memoria e impostare scadenze per le chiavi. Questo criterio potrebbe non essere sufficiente in caso di frammentazione.
- Configurare un valore maxmemory-reserved abbastanza grande da compensare la frammentazione della memoria.
- Creare avvisi sulle metriche, ad esempio la memoria usata, per ricevere notifiche tempestive sui possibili effetti.
- Aumentare le dimensioni della cache con una maggiore capacità di memoria. Per altre informazioni, vedere Domande frequenti sulla pianificazione di Cache Redis di Azure.
Per consigli sulla gestione della memoria, vedere Procedure consigliate per la gestione della memoria.
Comandi a esecuzione prolungata
Questa sezione è stata spostata. Per altre informazioni, vedere Comandi a esecuzione prolungata.
Limitazione della larghezza di banda lato server
Questa sezione è stata spostata. Per altre informazioni, vedere Limitazione della larghezza di banda di rete.