¿Cómo puedo solucionar problemas de presión elevada de memoria de JVM en mi clúster de Amazon OpenSearch Service?

Última actualización: 23/07/2021

Mi clúster de Amazon OpenSearch Service tiene una presión elevada de la memoria de JVM. ¿Qué significan los diferentes niveles de presión de la memoria de JVM y cómo se pueden reducir?

Resolución

La presión de la memoria de JVM especifica el porcentaje del almacenamiento dinámico de Java en un nodo de clúster. Las siguientes pautas indican el significado de los porcentajes de presión de la memoria de JVM:

  • Si la presión de la memoria JVM alcanza el 75 %, Amazon OpenSearch Service activa el recolector de basura Concurrent Mark Sweep (CMS). La recolección de basura es un proceso que requiere un uso intensivo de la CPU. Si la presión de la memoria de JVM se mantiene en este porcentaje durante unos minutos, podría encontrarse 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 JVM alcanza el 100 %, la JVM de OpenSearch Service está configurada para salir y, por último, se reinicia en OutOfMemory (OOM).

La presión elevada de la memoria de JVM puede deberse a las siguientes razones:

  • Picos en el número de solicitudes al clúster.
  • Agregaciones, comodines y selección de amplios intervalos de tiempo en las consultas.
  • Asignaciones de particiones desequilibradas entre nodos o demasiadas particiones en un clúster.
  • Explosiones de datos de campo o mapeo de índices.
  • Tipos de instancias que no pueden gestionar cargas entrantes.

Puede resolver los problemas de presión elevada de la memoria de JVM al reducir el tráfico hacia el clúster. Para reducir el tráfico hacia el clúster, siga estas prácticas recomendadas:

  • Borre la memoria caché de datos de campo con la operación de la API POST /index_name/_cache/clear?fielddata=true.
    Nota: Borrar la memoria caché puede interrumpir las consultas que estén en curso.
  • Evite realizar agregaciones en los campos de texto o cambiar el tipo de mapeo a palabra clave.
  • Escale el dominio (de modo que el tamaño máximo del almacenamiento dinámico por nodo sea de 32 GB).
  • Habilite los registros lentos para resolver solicitudes defectuosas.
    Nota: Compruebe que la presión de la memoria de JVM sea inferior al 90 %. Para obtener más información sobre las consultas lentas de Elasticsearch, consulte Ajustes avanzados: buscar y corregir consultas lentas de Elasticsearch en el sitio web de Elasticsearch.
  • Optimice la búsqueda o la indexación al elegir el número correcto de particiones. Para obtener más información sobre la indexación y el recuento de particiones, consulte Introducción a Amazon OpenSearch Service: ¿cuántas particiones necesito?
  • Reduzca el número de particiones al eliminar los índices antiguos o no utilizados.
  • Los usuarios avanzados pueden actualizar la configuración principal, de fielddata o de la interrupción de solicitudes en función del caso de uso. Para obtener más información sobre las interrupciones de JVM, consulte JVM OutOfMemoryError.

Para obtener más información acerca de cómo solucionar problemas de presión elevada de la memoria de JVM, consulte ¿Por qué se ha bloqueado el nodo de Amazon OpenSearch Service?

Amazon OpenSearch Service es el sucesor de Amazon Elasticsearch Service.