Comment changer Elasticsearch taille maximale de la mémoire

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, donc je veux réduire la mémoire.

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

j'ai vu que je peux exécutez ceci:

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

mais quand je dois redémarrer Elasticsearch ce sera perdu.

est-il possible de changer l'utilisation de la mémoire max lorsque Elasticsearch est installé comme service?

80
demandé sur Jeroen 2013-08-08 21:52:53

11 réponses

mis à jour le 24 novembre 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 vos commentaires ci-dessous.


j'ai une page pastebin que je partage avec d'autres quand je m'interroge sur la mémoire et les E. Ça a bien marché pour moi: http://pastebin.com/mNUGQCLY . Je vais coller le contenu ici:

, les Références:

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

Éditez les fichiers suivants pour modifier les limites de mémoire et de numéro de fichier. Ces instructions supposer Ubuntu 10.04, peut travailler sur les versions ultérieures et autres distributions / OS. ( Edit : cela fonctionne pour Ubuntu 14.04 ainsi.)

/etc/security/limits.conf :

elasticsearch - nofile 65535
elasticsearch - memlock unlimited

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

ES_HEAP_SIZE=512m
MAX_OPEN_FILES=65535
MAX_LOCKED_MEMORY=unlimited

/etc/elasticsearch/elasticsearch.yml :

bootstrap.mlockall: true
112
répondu James Addison 2017-05-23 12:03:06

Dans ElasticSearch >= 5 la documentation changé , ce qui signifie aucune des réponses ci-dessus, a travaillé pour moi.

j'ai essayé de changer ES_HEAP_SIZE dans /etc/default/elasticsearch et dans etc/init.d/elasticsearch , mais quand j'ai couru ps aux | grep elasticsearch la sortie a montré encore:

/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
99
répondu BigRon 2018-02-10 01:02:35

pour quiconque cherche à faire cela sur Centos 7 ou avec un autre système tournant sous SystemD, vous le changez en

/etc/sysconfig/elasticsearch 

désactiver la ligne ES_HEAP_SIZE, et définir 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)

24
répondu 2015-09-04 00:40:50

les réponses précédentes étaient insuffisantes dans mon cas, probablement parce que je suis sur Debian 8, alors qu'elles ont été renvoyées à une distribution précédente.

On Debian 8 modifier le script de service normalement placé dans /usr/lib/systemd/system/elasticsearch.service , et ajouter Environment=ES_HEAP_SIZE=8G juste en dessous des autres lignes" Environment=*".

rechargez maintenant le script de service avec systemctl daemon-reload et redémarrez le service. Le travail devrait être fait!

9
répondu claudod 2018-01-06 00:55:58

Instructions pour ubuntu 14.04 :

sudo vim /etc/init.d/elasticsearch

Set

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'info

8
répondu surfer190 2016-09-17 12:24:57

si vous utilisez l'emballage de service fourni dans le dépôt Github D'Elasticsearch, trouvé à https://github.com/elasticsearch/elasticsearch-servicewrapper , puis le fichier conf à elasticsearch-servicewrapper / service / elasticsearch.conf contrôle les paramètres de mémoire. En haut de elasticsearch.conf est un paramètre:

set.default.ES_HEAP_SIZE=1024

il suffit de réduire ce paramètre, dire "régler".default.ES_HEAP_SIZE=512", afin de réduire les mémoire.

notez que si vous utilisez l'enveloppe elasticsearch, la taille ES_HEAP_ fournie dans elasticsearch.le conf L'emporte sur tous les autres paramètres. Cela m'a pris un peu à comprendre, puisque de la documentation, il a semblé que la mémoire de tas pourrait être réglée à partir de elasticsearch.yml.

si vos paramètres d'enrubannage de service sont définis ailleurs, par exemple at /etc/default/elasticsearch comme dans L'exemple de James, alors définissez L'ES_HEAP_SIZE là.

7
répondu Scott Rice 2013-08-13 12:36:56

si vous avez installé ES en utilisant les paquets RPM/DEB tels que fournis (comme vous semblez l'avoir), Vous pouvez ajuster cela en éditant le script d'initialisation ( /etc/init.d/elasticsearch on RHEL/CentOS ). Si vous avez un regard dans le fichier, vous verrez un bloc avec ce qui suit:

export ES_HEAP_SIZE
export ES_HEAP_NEWSIZE
export ES_DIRECT_SIZE
export ES_JAVA_OPTS
export JAVA_HOME

pour ajuster la taille, il suffit de remplacer la ligne ES_HEAP_SIZE par la suivante:

export ES_HEAP_SIZE=xM/xG

(où x est le nombre de MB/GB de RAM que vous souhaitez allouer)

exemple:

export ES_HEAP_SIZE=1G

attribuerait 1 Go.

une fois que vous avez édité le script, Enregistrez et quittez, puis redémarrez le service. Vous pouvez vérifier si elle a été correctement définie en exécutant ce qui suit:

ps aux | grep elasticsearch

et vérification des options-Xms et-Xmx dans le processus java qui retourne:

/usr/bin/java -Xms1G -Xmx1G

Espérons que cela aide :)

6
répondu gl1tchh 2018-01-05 23:47:22

si vous utilisez windows server, vous pouvez changer la Variable D'environnement, redémarrer le serveur pour appliquer une nouvelle valeur D'environnement et commencer le service élastique. Plus de détails dans installer élastique dans Windows Server

1
répondu Thoai Ngo 2015-04-15 03:07:33

Dans elasticsearch chemin de la maison dir typiquement /usr/share/elasticsearch , Il existe un fichier de configuration bin/elasticsearch.in.sh . Modifier le paramètre ES_MIN_MEM , ES_MAX_MEM dans ce fichier pour changer -Xms2g , -Xmx4g respectivement. Et s'il vous plaît assurez-vous que vous avez redémarré le noeud après ce changement de configuration.

1
répondu Amit Sharma 2018-01-05 23:03:08

dans elasticsearch 2.x:

vi /etc/sysconfig/elasticsearch 

aller au bloc de code

# Heap size defaults to 256m min, 1g max
# Set ES_HEAP_SIZE to 50% of available RAM, but no more than 31g
#ES_HEAP_SIZE=2g

Décommenter la dernière ligne comme

ES_HEAP_SIZE=2g
1
répondu Ankush 2018-02-26 13:10:26
  • Elasticsearch assignera le tas entier spécifié dans jvm.options via les paramètres Xms (minimum heap size) et Xmx (maximum heap size).
    • - Xmx12g
    • - Xmx12g
  • définit la taille minimale des tas (Xms) et la taille maximale des tas (Xmx) comme étant égales l'une à l'autre.
  • ne mettez pas Xmx au-dessus de la coupure que la JVM utilise pour les pointeurs d'objets comprimés (Oops comprimé), la coupure exacte varie mais est proche de 32 Go.

  • il est également possible de définir la taille du tas via une variable d'environnement

    • ES_JAVA_OPTS= "-Xms2g-Xmx2g"./ bin / elasticsearch
    • ES_JAVA_OPTS = "- Xms4000m-Xmx4000m"./ bin / elasticsearch
1
répondu Satyendra Sharma 2018-09-29 00:15:59