Come posso risolvere il problema della pressione elevata della memoria JVM del mio cluster del Servizio OpenSearch?
Il mio cluster del Servizio OpenSearch di Amazon ha una pressione elevata della memoria Java Virtual Machine (JVM) e desidero ridurla.
Breve descrizione
Per impostazione predefinita, il Servizio OpenSearch utilizza il 50% della RAM di un'istanza Amazon Elastic Compute Cloud (Amazon EC2) per heap JVM fino a 32 GiB. La pressione della memoria JVM specifica la percentuale dell'heap Java in un nodo del cluster.
Le seguenti situazioni possono causare una pressione elevata della memoria JVM:
- Picchi nel numero di richieste al cluster
- Aggregazioni, caratteri jolly e ampi intervalli di tempo nelle query
- Allocazioni di shard non equilibrate tra i nodi o troppi shard in un cluster
- Esplosioni di dati di campi o mappature di indici
- Tipi di istanze Amazon EC2 che non riescono a gestire il carico in entrata
Risoluzione
Monitora i modelli nei dati
Per risolvere i problemi di pressione elevata della memoria JVM, riduci il traffico verso il cluster.
Esegui questo comando per ottenere statistiche a livello di nodo sul cluster e identificare i nodi che subiscono una pressione della memoria o un'eccessiva rimozione di oggetti inutili (garbage collection):
GET _nodes/stats/jvm
Per identificare meglio le richieste problematiche, attiva i log lenti. Per ulteriori informazioni, consulta Shard slow logs (Log lenti degli shard) sul sito web OpenSearch. Assicurati che la pressione della memoria JVM sia inferiore al 90%. Per ulteriori informazioni sulle query lente, consulta Advanced tuning: finding and fixing slow Elasticsearch queries (Impostazione avanzata: ricerca e correzione delle query Elasticsearch lente) sul sito web Elasticsearch.
Utilizza Amazon CloudWatch per monitorare l'utilizzo della memoria JVM e il comportamento della rimozione di oggetti inutili (garbage collection) nel tempo. Utilizza queste informazioni per rilevare i modelli e intervenire prima che si verifichi l'instabilità del cluster. Inoltre, configura allarmi in CloudWatch per rilevare e risolvere in modo proattivo la pressione elevata della memoria JVM.
Controlla le impostazioni della cache
Per cancellare la cache dei dati dei campi, esegui questa query:
POST /index_name/_cache/clear?fielddata=true
Nota: quando svuoti la cache, potresti interrompere le query in corso.
Se superi gli interruttori JVM e l'utilizzo della memoria rimane deselezionato, ricevi un errore JVM OutOfMemoryError. Per risolvere il problema, modifica l'allocazione della cache dei dati dei campi dell'interruttore principale o le impostazioni dell'interruttore di richiesta in base ai requisiti della configurazione. Per informazioni sulla modifica delle impostazioni a livello di cluster, consulta Cluster settings API (API Cluster settings) sul sito web OpenSearch.
Ottimizza la configurazione
Utilizza le seguenti best practice per ottimizzare la configurazione:
- Non aggregare campi di testo né modificare il tipo di mappatura in parola chiave.
- Scala il dominio in modo che la dimensione massima dell'heap per ogni nodo sia di 32 GiB.
- Scegli il numero corretto di partizioni per ottimizzare la ricerca o l'indicizzazione. Per ulteriori informazioni, consulta Come posso riequilibrare la distribuzione irregolare degli shard nel mio cluster del Servizio OpenSearch?
- Elimina gli indici inutilizzati per ridurre il numero di shard.
Per ulteriori informazioni sulla risoluzione del problema della pressione elevata della memoria JVM, consulta Perché il mio nodo del Servizio OpenSearch si è bloccato?
Comprendi gli effetti della pressione elevata della memoria JVM
Le situazioni seguenti mostrano come il Servizio OpenSearch gestisce diverse percentuali di pressione della memoria JVM:
- Se la pressione della memoria JVM raggiunge il 75%, il Servizio OpenSearch avvia la rimozione di oggetti inutili (garbage collector) CMS (Concurrent Mark Sweep) per i tipi di istanze x86. I tipi di istanze Graviton basate su ARM applicano la rimozione di oggetti inutili (garbage collector) Garbage-First (G1), che utilizza brevi pause aggiuntive e deframmentazione dell'heap.
Nota: la rimozione di oggetti inutili (garbage collection) è un processo che richiede un uso intensivo della CPU. Se l'utilizzo della memoria continua ad aumentare, potresti riscontrare errori "ClusterBlockException", "JVM OutOfMemoryError" o altri problemi di prestazioni del cluster. - Se la pressione della memoria JVM supera il 92% per 30 minuti, il Servizio OpenSearch blocca tutte le operazioni di scrittura.
- Se la pressione della memoria JVM raggiunge il 100%, il Servizio OpenSearch si chiude e alla fine riavvia l'istanza con il messaggio di errore "OutOfMemory (OOM)".
Informazioni correlate
Risoluzione dei problemi con il Servizio OpenSearch di Amazon
Get Started with Amazon Elasticsearch Service: How Many Shards Do I Need? (Nozioni di base di Amazon Elasticsearch Service: quanti shard mi servono?)
- Argomenti
- Analytics
- Lingua
- Italiano
