Risolvere i problemi del server della cache di Azure per Redis
Questa sezione illustra la risoluzione dei problemi causati da condizioni in un server 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 di carico server nella cache selezionando Monitoraggio dal menu Risorsa a sinistra. Nel riquadro di lavoro viene visualizzato il grafico del carico del server in Insights. In alternativa, aggiungere un set di metriche su Carico server in Metriche.
Di seguito sono riportate alcune opzioni da considerare per il carico del server elevato.
Aumentare o aumentare il numero di scalabilità
Aumentare la scalabilità per aggiungere altre partizioni, in modo che il carico venga distribuito in più processi Redis. Si consideri anche il ridimensionamento fino a una dimensione della cache più grande con più core CPU. Per altre informazioni, vedere domande frequenti sulla pianificazione di cache di Azure per Redis.
Modifiche rapide nel numero di connessioni client
Per altre informazioni, vedere Evitare picchi di connessione client.
Comandi a esecuzione prolungata o costoso
Questa sezione è stata spostata. Per altre informazioni, vedere Comandi a esecuzione prolungata.
Scalabilità
Le operazioni di ridimensionamento sono intensivo della CPU e della memoria, in quanto potrebbero comportare lo spostamento dei dati intorno ai nodi e la modifica della topologia del cluster. Per altre informazioni, vedere Ridimensionamento.
Manutenzione del server
Se il cache di Azure per Redis ha eseguito un failover, tutte le connessioni client dal nodo che sono state trasferite al nodo che è ancora in esecuzione. Il carico del server potrebbe aumentare a causa dell'aumento delle connessioni. È 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 pressione di memoria:
- La cache viene riempita con dati vicino alla capacità massima
- Il server Redis visualizza la frammentazione elevata della memoria
La frammentazione potrebbe essere causata quando un modello di carico archivia i dati con una variazione elevata di 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ò adattarsi a causa della frammentazione. Analogamente, se la chiave da 1 MB viene eliminata e viene aggiunta una chiave da 1,5 MB, non può essere adattata alla memoria recuperata esistente. Ciò causa la memoria libera inutilizzata e comporta una maggiore frammentazione.
Se il valore è superiore a 1,5 volte la used_memory_rss
used_memory
metrica, è 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 pressione elevata sulla 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 maxmemory-reserved
valori e maxfragmentationmemory-reserved
siano impostati in modo appropriato.
È possibile apportare diverse modifiche che consentono di mantenere integro l'utilizzo della memoria:
- Configurare un criterio di memoria e impostare i tempi di scadenza sulle chiavi. Questo criterio potrebbe non essere sufficiente in caso di frammentazione.
- Configurare un valore maxmemory-riservato sufficiente per compensare la frammentazione della memoria.
- Creare avvisi sulle metriche, ad esempio la memoria usata, per ricevere notifiche tempestive sui possibili effetti.
- Ridimensionare in una dimensione della cache più grande con una maggiore capacità di memoria. Per altre informazioni, vedere domande frequenti sulla pianificazione di cache di Azure per Redis.
Per raccomandazioni 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.