Perché riscontro un utilizzo elevato o crescente della CPU nel cluster ElastiCache per Redis?

Ultimo aggiornamento: 26/07/2022

Riscontro un utilizzo elevato o crescente della CPU nel cluster Amazon ElastiCache per Redis. Come posso risolvere il problema?

Breve descrizione

Esistono due parametri della CPU di Amazon CloudWatch per ElastiCache per Redis:

  • Utilizzo della CPU del motore: questo parametro riporta l'utilizzo della CPU del thread del motore Redis. Poiché Redis è a thread singolo, è consigliabile monitorare il parametro utilizzo della CPU del motore per i nodi con quattro o più vCPU.
  • Utilizzo della CPU del motore: questo parametro mostra la percentuale di utilizzo della CPU per l'intero host. Per i nodi più piccoli con massimo due vCPU, utilizza il parametro utilizzo della CPU per monitorare il carico di lavoro del cluster.

Risoluzione

Utilizzo elevato della CPU del motore

Di seguito sono riportati i motivi comuni per un elevato utilizzo della CPU del motore:

  • Un comando a esecuzione prolungata che utilizza molto tempo della CPU: i comandi con elevata complessità temporale come keys, hkeys, hgetall e così via, utilizzano più tempo della CPU. Per suggerimenti sulla complessità temporale e sulle prestazioni per ogni comando, consulta Comandi sul sito Web redis.io. Gli script Lua (eseguiti dai comandi EVAL o EVALSHA Redis) sono un'operazione atomica in Redis. Tutte le attività del server vengono bloccate durante l'intero tempo di esecuzione di uno script Lua, causando un elevato utilizzo della CPU del motore. Controlla se sono presenti comandi o uno script Lua a esecuzione prolungata utilizzando il registro Redis Slow.
  • Un numero elevato di richieste: controlla le statistiche dei comandi per determinare se ci sono raffiche di comandi o se la latenza sta aumentando. Puoi controllare le statistiche dei comandi utilizzando i parametri CloudWatch come GetTypeCmds o HashBasedCmds. Oppure, puoi utilizzare il comando Redis info commandstats. Se visualizzi un numero elevato di richieste a causa del carico di lavoro previsto sull'applicazione, puoi dimensionare il cluster.
  • Backup e replica: controlla il parametro SaveInProgress per verificare se il backup o la replica sono in corso. Questo parametro binario restituisce "1" quando è in corso un salvataggio in background (con fork o senza fork). Il parametro restituisce "0" se non è in corso un salvataggio in background. Assicurati di avere abbastanza memoria per creare un'istantanea Redis.
  • Numero elevato di nuove connessioni: stabilire una connessione TCP è un'operazione computazionalmente costosa, soprattutto per i cluster abilitati a TLS. Un numero elevato di nuove richieste di connessione client in un breve periodo di tempo potrebbe causare un aumento dell'utilizzo della CPU del motore. I miglioramenti delle prestazioni per i cluster abilitati a TLS che utilizzano tipi di nodi x86 con otto o più vCPU su tipi di nodi Graviton2 con quattro o più vCPU sono stati implementati a partire da Redis 6.2. Per consigli sulla gestione di un gran numero di connessioni, consulta Best practice: client Redis e Amazon ElastiCache per Redis.
  • Numero elevato di espulsioni: Redis espelle le chiavi in base al parametro maxmemory-policy. L'espulsione avviene quando la cache non dispone di memoria sufficiente per contenere nuovi dati. Se il volume di espulsioni è elevato, il parametro EngineCPUUtilization aumenta perché Redis è impegnato a espellere le chiavi. Il volume di espulsioni può essere monitorato utilizzando i parametri di espulsione di CloudWatch. Se l'espulsione è elevata, ridimensiona il cluster utilizzando un tipo di nodo più grande o aumentare orizzontalmente altri nodi.
  • Numero elevato di recuperi: per liberare memoria, Redis esegue il campionamento e quindi elimina tutte le chiavi che hanno raggiunto la scadenza del timeout. Questa procedura è definita "recupero". Se il numero di scadenze è elevato, EngineCPUUtilization aumenta perché Redis è impegnato a recuperare le chiavi. È possibile monitorare il numero di eventi di scadenza chiave utilizzando i parametri CloudWatch Reclaimed. È consigliabile non far scadere troppe chiavi contemporaneamente eseguendo, ad esempio, il comando EXPIREAT Redis.

Per ulteriori informazioni sulla risoluzione dei problemi relativi all'utilizzo elevato della CPU del motore, consulta Risoluzione dei problemi relativi alle connessioni: utilizzo della CPU.

Utilizzo elevato della CPU

Di seguito sono riportati i motivi più comuni per un elevato utilizzo della CPU:

  • Traffico o connessioni di rete elevati: controlla i parametri NewConnections, NetworkBytesIN, NetworkBytesOut, NetworkPacketsIn e NetworkPacketsOut CloudWatch.
  • Utilizzo elevato della CPU del motore e I/O asincrono gestito da altri thread: per i dettagli sulla gestione ottimizzata dell'I/O, consulta Amazon ElastiCache performance boost with Amazon EC2 M5 and R5 instances (Aumento delle prestazioni di Amazon ElastiCache con le istanze Amazon EC2 M5 e R5).
  • Manutenzione gestita continua e aggiornamenti del servizio: la manutenzione e gli aggiornamenti del servizio richiedono capacità di calcolo. Di conseguenza, potresti notare un picco nell'utilizzo della CPU durante questi eventi. Controlla la finestra di manutenzione per verificare se il picco coincide con la finestra. È consigliabile impostare la finestra di manutenzione al momento di utilizzo più basso per ridurre al minimo l'impatto. Per ulteriori informazioni, vedi Pagina di assistenza agli aggiornamenti del servizio e alla manutenzione gestita da Amazon ElastiCache.
  • Paging elevato e operazioni come il backup: una memoria insufficiente sul nodo può causare il page out della memoria del kernel per lo scambio. Se il paging è eccessivo, è possibile che si verifichi un aumento dell'utilizzo della CPU. Allo stesso modo, se il carico sul nodo è elevato durante operazioni come il backup o il dimensionamento, è possibile che si verifichi un aumento dell'utilizzo della CPU. Per suggerimenti sui parametri per identificare la causa di un picco, consulta Monitoring best practices with Amazon ElastiCache for Redis using Amazon CloudWatch (Monitoraggio delle best practice con Amazon ElastiCache per Redis utilizzando Amazon CloudWatch).

Questo articolo è stato utile?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?