Come posso risolvere i problemi relativi all'aumento dell'utilizzo della CPU nel mio cluster autoprogettato da ElastiCache per Redis?

5 minuti di lettura
0

Desidero risolvere i problemi relativi all'aumento dell'utilizzo della CPU nel mio cluster autoprogettato da Amazon ElastiCache per Redis.

Breve descrizione

Di seguito sono riportate le metriche della CPU di Amazon CloudWatch per ElastiCache per Redis:

  • EngineCPUUtilization: Riporta l'utilizzo della CPU per il thread del motore Redis. Redis è a thread singolo. È consigliabile monitorare la metrica EngineCPUUtilization per i nodi con quattro o più vCPU.
  • CPUUtilization: Indica la percentuale di utilizzo della CPU per l'host. Per i nodi più piccoli con due o meno vCPU, utilizza la metrica CPUUtilization per monitorare il carico di lavoro del cluster.

Risoluzione

Risolvi i problemi relativi a EngineCPUUtilization elevato

Per risolvere i problemi relativi a EngineCPUUtilization, verifica quanto segue:

  • Comandi di lunga durata che consumano molto tempo di CPU: I comandi con elevata complessità temporale come chiavi, hkeys e hgetall consumano un elevato tempo di CPU. Per verificare la complessità temporale e i suggerimenti sulle prestazioni di un comando, consulta Comandi sul sito Web Redis. Se si utilizzano script Lua, tutte le attività del server vengono bloccate durante il runtime e l'EngineCPUUtilization aumenta. Gli script Lua vengono utilizzati dai comandi EVAL ed EVALSHA Redis. Per ulteriori informazioni, consulta Scripting con Lua, EVAL ed EVALSHA sul sito Web Redis. Per verificare la presenza di comandi o script Lua di lunga durata, usa Redis SLOWLOG.
  • Un numero elevato di richieste: Controlla le statistiche dei comandi per identificare i burst di comandi o l'aumento della latenza. Per controllare le statistiche dei comandi, utilizza le metriche di CloudWatch come GetTypeCmds o HashBasedCmds. Oppure, usa il comando Redis INFO. Per ulteriori informazioni, consulta INFO sul sito Web di Redis. Se hai un numero elevato di richieste e il carico di lavoro dell'applicazione è quello previsto, ridimensiona il cluster.
  • Backup e replica: Se si è verificato un backup o una replica, controlla la metrica SaveInProgress. Questa metrica binaria mostra 1 quando è in corso un salvataggio in background (biforcato o forkless) e mostra 0 quando un salvataggio in background non è in corso. Assicurati che ci sia abbastanza memoria per creare uno snapshot Redis.
  • Numero elevato di NewConnections: Un numero elevato di nuove richieste di connessione client in un breve periodo di tempo potrebbe causare un aumento dell'utilizzo dell'EngineCPUUtilization. Per le procedure consigliate quando gestisci un numero elevato di connessioni, vedi Procedure consigliate: Client Redis e Amazon ElastiCache per Redis. Per Redis 6.2 e versioni successive, sono stati implementati miglioramenti delle prestazioni. Per ulteriori informazioni, consulta ElastiCache per Redis 6.2 (migliorato).
  • Elevato numero di espulsioni chiave: Redis espelle le chiavi in base al parametro maxmemory-policy. Le espulsioni si verificano quando la cache non dispone di memoria sufficiente per contenere nuovi dati. Se il volume di rimozione è elevato, Redis utilizza più risorse della CPU per eliminare le chiavi e l'EngineCPUUtilization aumenta. Per monitorare il volume delle espulsioni, utilizza la metrica Espulsioni di CloudWatch. Se il volume delle espulsioni è elevato, utilizza un tipo di nodo più grande o aggiungi altri nodi per ridimensionare il cluster.
  • Numero elevato di recuperi: Per liberare memoria, Redis campiona ed elimina tutte le chiavi che hanno raggiunto la scadenza del timeout. Questo processo è chiamato recupero. Se il numero di scadenze è elevato, CPUUtilization e EngineCPUUtilization potrebbero aumentare. Per monitorare il numero di eventi chiave di scadenza, utilizza la metrica CloudWatch Reclaimed. È consigliabile assicurarsi che troppe chiavi non scadano contemporaneamente. Per assicurarti che le tue chiavi scadano in finestre temporali diverse, usa il comando EXPIREAT o imposta valori TTL diversi per le tue chiavi. Per ulteriori informazioni, consulta EXPIREAT sul sito Web di Redis.

Risolvi i problemi relativi all'elevato CPUUtilization

Per risolvere i problemi relativi a CPUUtilization elevato, verifica quanto segue:

  • Traffico o connessioni di rete elevati: Un traffico o connessione di rete elevati potrebbero comportare un maggiore CPUUtilization su Amazon ElastiCache Redis. Per verificare la presenza di traffico o connessioni di rete elevati, controlla le metriche NewConnections, NetworkBytesIn, NetworkBytesOut, NetworkPacketsIn, e NetworkPacketsOut CloudWatch.
  • I/O asincrono gestito da altri thread: Per i tipi di nodi supportati, l'I/O avanzato è progettato per gestire l'I/O di rete su thread dedicati. Inoltre, per Redis versione 6.2 e successive, l'offload TLS è supportato e consente a ElastiCache for Redis di eseguire operazioni TLS sui thread I/O. Le operazioni TLS utilizzano il core della CPU aggiuntivo disponibile nei nodi e questo utilizzo aggiuntivo della CPU potrebbe comportare un maggiore CPUUtilization. Per ulteriori informazioni, consulta Amazon ElastiCache Performance Boost con le istanze M5 e R5 di Amazon EC2.
  • Aggiornamenti continui di manutenzione gestita e assistenza: Gli aggiornamenti di manutenzione e assistenza richiedono capacità di elaborazione e potrebbero comportare un aumento di CPUUtilization. Assicurati di controllare la finestra di manutenzione per vedere se l'aumento di CPUUtilization si verifica contemporaneamente. È consigliabile impostare la finestra di manutenzione su un periodo di basso utilizzo. Per ulteriori informazioni, consulta la pagina di aiuto per la manutenzione gestita e gli aggiornamenti dei servizi di Amazon ElastiCache.
  • Paging e operazioni elevati: Una memoria insufficiente sul nodo potrebbe causare l'esaurimento della memoria da parte del kernel per lo swap. Questa azione può portare a un peggioramento delle prestazioni. Se il paging è eccessivo, CPUUtilization potrebbe aumentare. Inoltre, se il carico sul nodo è elevato quando si verificano operazioni come il backup o il ridimensionamento, CPUUtilization potrebbe aumentare. Per ulteriori informazioni, consulta le best practice di monitoraggio con Amazon ElastiCache per Redis utilizzando Amazon CloudWatch.
AWS UFFICIALE
AWS UFFICIALEAggiornata 8 mesi fa