Perché ho una metrica "Network allowance exceeded" nel mio cluster ElastiCache autogestito?
Nel mio ambiente Amazon ElastiCache viene visualizzata una metrica "Network allowance exceeded".
Breve descrizione
Quando il carico di lavoro dell'applicazione supera le capacità di rete del nodo ElastiCache sottostante, può verificarsi il traffic shaping. Per monitorare il traffic shaping, utilizza le seguenti metriche:
- NetworkBandwidthInAllowanceExceeded e NetworkBandwidthOutAllowanceExceeded
- NetworkPacketsPerSecondAllowanceExceeded
- NetworkConntrackAllowanceExceeded
Risoluzione
NetworkBandwidthInAllowanceExceeded e NetworkBandwidthOutAllowanceExceeded
Le metriche NetworkBandwidthInAllowanceExceeded e NetworkBandwidthOutAllowanceExceeded monitorano il numero di pacchetti di rete che ElastiCache ottimizza con il traffic shaping quando il throughput supera il limite di larghezza di banda aggregato.
Quando esamini le metriche NetworkBandwidthInAllowanceExceeded and NetworkBandwidthOutAllowanceExceeded, devi esaminare anche le metriche NetworkBytesIn e NetworkBytesOut in Amazon CloudWatch. Quando le metriche di utilizzo della larghezza di banda di CloudWatch NetworkBytesIn e NetworkBytesOut sono inferiori ai limiti a livello di nodo, le metriche delle prestazioni di rete potrebbero mostrare che ElastiCache ha superato una soglia consentita. Per ulteriori informazioni, consulta Monitorare la larghezza di banda delle istanze.
Nota: piccoli picchi di traffico possono indurre il traffic shaping, anche se la larghezza di banda media è entro i limiti. Se si verificano picchi occasionali in queste metriche relative alla larghezza di banda senza effetti sul lato delle applicazioni, non sono necessarie ulteriori azioni. Poiché Valkey e Redis OSS utilizzano TCP, TCP ritrasmette i pacchetti persi.
Se le metriche relative alla larghezza di banda sono costantemente alte e l'applicazione riscontra problemi di latenza, rivedi i timestamp dei problemi di latenza. Se i timestamp degli errori corrispondono ai momenti di picco delle metriche, aumenta verticalmente il cluster. Per ulteriori informazioni, consulta Dimensionamento dei cluster progettati autonomamente.
Inoltre, controlla il tipo di nodo di cache per il cluster. Se il carico di lavoro dell'applicazione aumenta costantemente l'utilizzo della rete oltre la larghezza di banda di base, potresti riscontrare fenomeni di traffic shaping. Per ulteriori informazioni, consulta Larghezza di banda disponibile per l'istanza.
Nota: per ogni byte che ElastiCache scrive nel nodo primario, ElastiCache replica le stesse informazioni su tutte le altre repliche. Quando il cluster tenta di elaborare il backlog di replica, i cluster con tipi di nodo piccoli, repliche multiple e richieste di scrittura intensive potrebbero presentare problemi. Questo backlog può portare a valori NetworkBandwidthOutAllowanceExceeded elevati sui nodi primari.
Per determinare la causa di un picco nelle metriche sul lato applicazione, cerca i comandi che operano su più chiavi. Ad esempio:
- MGET
- MSET
- HGETALL
Se utilizzi più chiavi di grandi dimensioni, come oggetti JSON di grandi dimensioni o valori hash, potresti superare i limiti di larghezza di banda del tipo di nodo. Quindi ElastiCache elimina il traffico in eccesso o lo aggiunge a una coda in base al carico corrente.
NetworkPacketsPerSecondAllowanceExceeded
Se questa metrica corrisponde a un valore diverso da 0, l'utilizzo della rete sui nodi di cache sottostanti ha superato il limite di pacchetti al secondo (PPS). Il limite è specifico per il tipo di nodo utilizzato. ElastiCache elimina o mette in coda i pacchetti in eccesso che superano il limite del nodo.
Per le applicazioni che generano query elevate al secondo (QPS) di piccole dimensioni, il nodo potrebbe superare i limiti PPS. Per determinare la velocità di esecuzione dei comandi, utilizza le metriche di CloudWatch per ciascun tipo di dati Command. Per ulteriori informazioni, consulta Metriche per Valkey e Redis OSS.
Per risolvere il problema, puoi aumentare verticalmente il cluster fino a un tipo di nodo più grande. Se le operazioni sono ad alta intensità di lettura, puoi aggiungere altre repliche in lettura al cluster o allo shard per distribuire il carico. Per i cluster con modalità cluster abilitata (CME), se le operazioni sono ad alta intensità di scrittura, aggiungi altri shard per aumentare orizzontalmente il cluster.
Nota: per i cluster con modalità cluster disabilitata (CMD), devi spostare il cluster su un nodo più grande per scalare le operazioni di scrittura.
NetworkConntrackAllowanceExceeded
Se questa metrica corrisponde a un valore diverso da 0, ElastiCache ha superato il numero massimo di connessioni monitorate in tutti i gruppi di sicurezza del nodo. Una volta raggiunto il limite di connessioni, le nuove connessioni non riescono finché ElastiCache non chiude le connessioni esistenti. Per ulteriori informazioni, consulta Monitoraggio delle connessioni dei gruppi di sicurezza Amazon Elastic Compute Cloud (Amazon EC2).
Quando i carichi di lavoro creano un numero elevato di connessioni di rete e non chiudi correttamente le connessioni, le connessioni rimangono aperte sul lato server. Queste connessioni rimangono inattive e portano all'esaurimento conntrack. Quindi ElastiCache non può accettare nuove connessioni finché vengono chiuse le connessioni esistenti.
Per risolvere il problema in ElastiCache, utilizza il parametro timeout per esaminare e modificare il timeout delle connessioni inattive. Configura il parametro per il server ElastiCache in modo da chiudere le connessioni dopo un periodo di inattività.
Per risolvere il problema sul lato applicazione, utilizza le impostazioni del pool di connessioni per riutilizzare le connessioni esistenti e ridurre la frequenza di NewConnections. Per ulteriori informazioni, consulta Best practices: Redis clients and Amazon ElastiCache for Redis (Best practice: client Redis e Amazon ElastiCache per Redis).
Nota: sia il parametro timeout sul lato server che le impostazioni Connection Pool sul lato client gestiscono l'instaurazione della connessione e richiedono il test di carico dall'applicazione. Testa il carico dell'applicazione per determinare la configurazione ottimale per le impostazioni di timeout e del pool di connessioni.
Informazioni correlate
Monitoraggio dell'utilizzo con le metriche di CloudWatch
Dimensionamento di ElastiCache
Amazon EC2 instance-level network performance metrics uncover new insights (Le metriche delle prestazioni di rete a livello di istanza di Amazon EC2 rivelano nuove informazioni)
- Argomenti
- Database
- Lingua
- Italiano
