137 votes

Comment modifier la taille maximale de la mémoire d'Elasticsearch

J'ai un serveur Apache avec une configuration par défaut d'Elasticsearch et tout fonctionne parfaitement, sauf que la configuration par défaut a une taille maximale de 1 Go.

Je n'ai pas un si grand nombre de documents à stocker dans Elasticsearch, je veux donc réduire la mémoire.

J'ai vu que je dois changer le -Xmx dans la configuration Java, mais je ne sais pas comment.

J'ai vu que je pouvais l'exécuter :

bin/ElasticSearch -Xmx=2G -Xms=2G

Mais lorsque je devrai redémarrer Elasticsearch, tout sera perdu.

Est-il possible de modifier l'utilisation maximale de la mémoire lorsque Elasticsearch est installé en tant que service ?

171voto

BigRon Points 2232

Sur ElasticSearch >= 5 la documentation a modifié ce qui signifie qu'aucune des réponses ci-dessus n'a fonctionné pour moi.

J'ai essayé de changer ES_HEAP_SIZE sur /etc/default/elasticsearch et en /etc/init.d/elasticsearch mais quand j'ai lancé ps aux | grep elasticsearch la sortie est toujours affichée :

/usr/bin/java -Xms2g -Xmx2g # aka 2G min and max ram

J'ai dû faire ces changements dans :

/etc/elasticsearch/jvm.options

# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space

-Xms1g 
-Xmx1g 
# the settings shipped with ES 5 were: -Xms2g
# the settings shipped with ES 5 were: -Xmx2g

117voto

James Addison Points 1261

Mis à jour le 24 nov. 2016 : Elasticsearch 5 a apparemment changé la façon de configurer la JVM. Voir cette réponse ici . La réponse ci-dessous s'applique toujours aux versions < 5.

tirdadc, merci de le signaler dans votre commentaire ci-dessous.


J'ai une page pastebin que je partage avec les autres lorsque je m'interroge sur la mémoire et l'ES. Cela a bien fonctionné pour moi : http://pastebin.com/mNUGQCLY . Je vais également coller le contenu ici :

Références :

https://github.com/grigorescu/Brownian/wiki/ElasticSearch-Configuration http://www.elasticsearch.org/guide/reference/setup/installation/

Editez les fichiers suivants pour modifier les limites de mémoire et de nombre de fichiers. Ces instructions supposent Ubuntu 10.04, mais peuvent fonctionner sur des versions ultérieures et d'autres distributions/OS. ( Modifier : Cela fonctionne également pour Ubuntu 14.04).

/etc/security/limits.conf :

elasticsearch - nofile 65535
elasticsearch - memlock unlimited

/etc/default/elasticsearch (sur CentOS/RH : /etc/sysconfig/elasticsearch ) :

ES_HEAP_SIZE=512m
MAX_OPEN_FILES=65535
MAX_LOCKED_MEMORY=unlimited

/etc/elasticsearch/elasticsearch.yml :

bootstrap.mlockall: true

40voto

Farahmand Points 449

Créer un nouveau fichier avec l'extension .options dentro de /etc/elasticsearch/jvm.options.d et y mettre les options. Par exemple :

sudo nano /etc/elasticsearch/jvm.options.d/custom.options

et y mettre le contenu :

# JVM Heap Size - see /etc/elasticsearch/jvm.options
-Xms2g
-Xmx2g

Il fixera la taille maximale du tas à 2 Go. N'oubliez pas de redémarrer elasticsearch :

sudo systemctl restart elasticsearch

Vous pouvez maintenant vérifier les journaux :

sudo cat /var/log/elasticsearch/elasticsearch.log | grep "heap size"

Vous verrez quelque chose comme ça :

heap size [2gb], compressed ordinary object pointers [true]

Doc

28voto

Pour tous ceux qui veulent faire cela sur Centos 7 ou avec un autre système utilisant SystemD, vous le changez en

/etc/sysconfig/elasticsearch 

Décommentez la ligne ES_HEAP_SIZE, et définissez une valeur, par exemple :

# Heap Size (defaults to 256m min, 1g max)
ES_HEAP_SIZE=16g

(Ignorer le commentaire sur 1g max - c'est la valeur par défaut).

15voto

Stevie G Points 931

Instructions pour ubuntu 14.04 :

sudo vim /etc/init.d/elasticsearch

Définir

ES_HEAP_SIZE=512m

puis dans :

sudo vim /etc/elasticsearch/elasticsearch.yml

Set :

bootstrap.memory_lock: true

Il y a des commentaires dans les fichiers pour plus d'informations

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X