Elasticsearch Establecer tamaño máximo de memoria

Elasticsearch Establecer Tamano Maximo De Memoria



“La memoria es un recurso esencial pero limitado cuando se trabaja con Elasticsearch. Esto se debe a que Lucene hará uso de toda la memoria disponible. Sin embargo, cuando se configura incorrectamente, la configuración de la memoria puede generar un bajo rendimiento y un uso ineficiente de la memoria”.

En este tutorial, le mostraremos la configuración máxima y mínima del tamaño de almacenamiento dinámico de JVM al trabajar con Elasticsearch.







Empecemos.



¿Qué es una Memoria Heap?

En el contexto de Elasticsearch, la memoria Heap se refiere a la cantidad total de memoria asignada a la máquina virtual de Java dentro de un nodo de Elasticsearch.



Elasticsearch establecerá de forma predeterminada el tamaño del montón de JVM en función de la memoria total del sistema base y la función del nodo. Esto significa que la asignación del tamaño de la memoria del montón puede variar dependiendo de si se trata de un nodo maestro, datos, ingesta, data_cold, etc.





Para la mayoría de los entornos de producción, se recomienda permitir que Elasticsearch administre el tamaño del almacenamiento dinámico y es más que suficiente.

NOTA : si está ejecutando Elasticsearch en Docker, la memoria de almacenamiento dinámico total se basa en el tamaño total del contenedor de Docker y no en el host de Docker.



Configuración del tamaño de almacenamiento dinámico mínimo y máximo

Para configurar el tamaño de almacenamiento dinámico mínimo y máximo, podemos usar los parámetros Xms y Xmx. Los probits de Elasticsearch establecen la memoria máxima en no más del 50 % de la memoria total. Esto se debe a que, además de JVM Heap, Elasticsearch requiere más memoria para otras operaciones, como la memoria caché del sistema de archivos, la comunicación de red, etc. De manera similar, JVM utilizará una sección del 50 % restante de la memoria.

En segundo lugar, no establezca los valores de xms y xmx en más del umbral de los oops. Para una configuración segura, limítela a 26 GB o 30 GB en algunos sistemas.

Puede verificar el umbral en el registro de Elasticsearch.

gato elasticsearch.log | grep 'punteros de objeto'

Debería ver una entrada como se muestra:

[2022-08-19T20:01:50,275][INFO ][o.e.e.NodeEnvironment    ] [debian11] tamaño de almacenamiento dinámico [1,9 gb], punteros de objetos ordinarios comprimidos [verdadero]
[2022-08-19T20:08:07,207][INFO ][o.e.e.NodeEnvironment    ] [debian11] tamaño de almacenamiento dinámico [1,9 gb], punteros de objetos ordinarios comprimidos [verdadero]
[2022-08-19T20:36:47,244][INFO ][o.e.e.NodeEnvironment    ] [debian11] tamaño de almacenamiento dinámico [1,9 gb], punteros de objetos ordinarios comprimidos [verdadero]

También puede consultar la API de información de nodos para los valores xms y xmx:

curl -X GET localhost:9200/_nodes/_all/jvm?pretty

Debería ver una salida como se muestra:

Establecer el tamaño de almacenamiento dinámico mínimo y máximo

Para modificar los valores de JVM Heap Size, debe agregar un archivo de configuración en el directorio /etc/elasticsearch/jvm.options.d. Este archivo debe terminar con la extensión .options.

Por ejemplo:

$ sudo touch /etc/elasticsearch/jvm.options.d/heap.options

Edite el archivo

$ sudo nano /etc/elasticsearch/jvm.options.d/heap.options

Agregue el tamaño de memoria de montón mínimo y máximo deseado.

Por ejemplo, la siguiente entrada configura el tamaño de almacenamiento dinámico mínimo y máximo en 4 GB.

Guarde el archivo y reinicie el servicio Elasticsearch.

Conclusión

En este tutorial, aprendió el montón de JVM en el contexto de Elasticsearch, cómo Elasticsearch configura el montón de JVM y cómo puede modificar el tamaño del montón.

¡¡Gracias por leer!!