Elasticsearch définit la taille maximale de la mémoire

Elasticsearch Definit La Taille Maximale De La Memoire



« La mémoire est une ressource essentielle mais limitée lorsque l'on travaille avec Elasticsearch. En effet, Lucene utilisera toute la mémoire disponible. Cependant, lorsqu'ils sont mal configurés, les paramètres de mémoire peuvent entraîner de faibles performances et une utilisation inefficace de la mémoire.

Dans ce didacticiel, nous vous montrerons la configuration maximale et minimale de la taille de tas JVM lorsque vous travaillez avec Elasticsearch.







Commençons.



Qu'est-ce qu'une mémoire de tas ?

Dans le contexte d'Elasticsearch, la mémoire Heap fait référence à la quantité totale de mémoire allouée à la machine virtuelle Java dans un nœud Elasticsearch.



Elasticsearch définira par défaut la taille du tas JVM en fonction de la mémoire totale du système de base et du rôle du nœud. Cela signifie que l'allocation de la taille de la mémoire du tas peut varier selon qu'il s'agit d'un nœud maître, de données, d'ingest, de data_cold, etc.





Pour la plupart des environnements de production, autoriser Elasticsearch à gérer la taille du tas est recommandé et plus que suffisant.

REMARQUE : Si vous exécutez Elasticsearch dans Docker, la mémoire de tas totale est basée sur la taille totale du conteneur Docker et non sur l'hôte Docker.



Configuration de la taille de segment de mémoire minimale et maximale

Pour configurer la taille de tas minimale et maximale, nous pouvons utiliser les paramètres Xms et Xmx. Les probits d'Elasticsearch définissent la mémoire maximale à pas plus de 50 % de la mémoire totale. En effet, en dehors de JVM Heap, Elasticsearch nécessite plus de mémoire pour d'autres opérations telles que le cache du système de fichiers, la communication réseau, etc. De même, la JVM utilisera une partie des 50 % de mémoire restants.

Deuxièmement, ne définissez pas les valeurs xms et xmx sur plus que le seuil des oops. Pour une configuration sûre, limitez-la à 26 Go ou 30 Go sur certains systèmes.

Vous pouvez vérifier le seuil dans le journal Elasticsearch.

chat elasticsearch.log | grep 'pointeurs d'objets'

Vous devriez voir une entrée comme indiqué :

[2022-08-19T20:01:50,275][INFO ][o.e.e.NodeEnvironment    ] [debian11] taille de tas [1.9gb], pointeurs d'objet ordinaires compressés [true]
[2022-08-19T20:08:07,207][INFO ][o.e.e.NodeEnvironment    ] [debian11] taille de tas [1.9gb], pointeurs d'objet ordinaires compressés [true]
[2022-08-19T20:36:47,244][INFO ][o.e.e.NodeEnvironment    ] [debian11] taille de tas [1.9gb], pointeurs d'objet ordinaires compressés [true]

Vous pouvez également interroger l'API d'informations sur les nœuds pour les valeurs xms et xmx :

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

Vous devriez voir une sortie comme indiqué :

Définir la taille minimale et maximale du segment de mémoire

Pour modifier les valeurs de la taille du tas JVM, vous devez ajouter un fichier de configuration dans le répertoire /etc/elasticsearch/jvm.options.d. Ce fichier doit se terminer par l'extension .options.

Par exemple:

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

Modifier le fichier

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

Ajoutez la taille de mémoire de segment minimale et maximale souhaitée.

Par exemple, l'entrée ci-dessous configure la taille de segment minimale et maximale sur 4 Go.

Enregistrez le fichier et redémarrez le service Elasticsearch.

Conclusion

Dans ce didacticiel, vous avez appris le tas JVM dans le contexte d'Elasticsearch, comment Elasticsearch configure le tas JVM et comment vous pouvez modifier la taille du tas.

Merci d'avoir lu!!