Saltar al contenido

¿Cómo soluciono los problemas de alta presión de memoria de JVM en mi clúster de OpenSearch Service?

4 minutos de lectura
0

Mi clúster de Amazon OpenSearch Service tiene una gran presión de memoria para máquinas virtuales Java (JVM) y quiero reducirla.

Descripción corta

De forma predeterminada, OpenSearch Service utiliza el 50 % de la RAM de una instancia de Amazon Elastic Compute Cloud (Amazon EC2) para montones de JVM de hasta 32 GiB. La presión de la memoria de JVM especifica el porcentaje del montón de Java en un nodo de clúster.

Los siguientes escenarios pueden provocar la presión elevada de la memoria de JVM:

  • Picos en el número de solicitudes al clúster
  • Agregaciones, comodines y amplios intervalos de tiempo en las consultas
  • Asignaciones de particiones desequilibradas entre nodos o demasiadas particiones en un clúster
  • Crecimiento de las asignaciones de índices o datos de campo
  • Tipos de instancias de Amazon EC2 que no pueden administrar la carga entrante

Resolución

Supervisión de los patrones de los datos

Para resolver los problemas de alta presión de memoria de JVM, reduce el tráfico al clúster.

Ejecuta el siguiente comando para obtener estadísticas a nivel de nodo sobre tu clúster e identificar los nodos que sufren una presión de memoria o una recopilación excesiva de elementos no utilizados:

GET _nodes/stats/jvm

Para identificar mejor las solicitudes defectuosas, activa los registros lentos. Para obtener más información, consulta Shard slow logs (Registros lentos en las particiones) en el sitio web de OpenSearch. Asegúrate que la presión de la memoria de JVM sea inferior al 90 %. Para obtener más información sobre las búsquedas lentas, consulta Ajustes avanzados: encontrar y resolver búsquedas lentas en Elasticsearch en el sitio web de Elasticsearch.

Utiliza Amazon CloudWatch para supervisar el uso de la memoria de la JVM y el comportamiento de recopilación de elementos no utilizados a lo largo del tiempo. Utiliza esta información para detectar patrones y tomar medidas antes de que experimentes inestabilidad en los clústeres. Además, configura las alarmas de CloudWatch para detectar y resolver de forma proactiva la alta presión de memoria de la JVM.

Comprobar la configuración de la caché

Para borrar la caché de datos de campo, ejecuta la siguiente consulta:

POST /index_name/_cache/clear?fielddata=true

Nota: Al borrar la memoria caché, es posible que interrumpas las consultas en curso.

Si superas los disyuntores de JVM y tu uso de memoria permanece desactivado, recibirás un error JVM OutOfMemoryError. Para resolver este problema, modifica la asignación de la caché de datos de campo del disyuntor principal o solicita la configuración del disyuntor según los requisitos de tu configuración. Para obtener información sobre cómo modificar esta configuración a nivel de clúster, consulta la API de configuración de clúster en el sitio web de OpenSearch.

Optimización de la configuración

Sigue estas prácticas recomendadas para optimizar la configuración:

Para obtener más información sobre cómo solucionar problemas de alta presión de memoria en JVM, consulta ¿Por qué se bloqueó el nodo de OpenSearch Service?

Descripción de los efectos de la alta presión de memoria de JVM

Los siguientes escenarios muestran cómo OpenSearch Service administra los diferentes porcentajes de presión de memoria de JVM:

  • Si la presión de la memoria de la JVM alcanza el 75 %, OpenSearch Service inicia el recolector de elementos no utilizados de Concurrent Mark Sweep (CMS) para los tipos de instancias x86. Los tipos de instancias de Graviton basadas en ARM utilizan el recopilador de elementos no utilizados Garbage-First (G1), con breves pausas adicionales y desfragmentación de montones.
    Nota: La recopilación de elementos no utilizados es un proceso que consume mucha CPU. Si el uso de memoria sigue aumentando, es posible que te encuentres con «ClusterBlockException», «JVM OutOfMemoryError» u otros problemas de rendimiento del clúster.
  • Si la presión de la memoria de JVM supera el 92 % durante 30 minutos, OpenSearch Service bloquea todas las operaciones de escritura.
  • Si la presión de la memoria de la JVM alcanza el 100 %, OpenSearch Service se cierra y, finalmente, reinicia la instancia con el mensaje de error «OutOfMemory (OOM)».

Información relacionada

Solución de problemas de OpenSearch Service

Get started with OpenSearch Service: How many shards do I need? (Introducción a OpenSearch Service: ¿cuántas particiones necesito?)

OFICIAL DE AWSActualizada hace 7 meses