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 grand nombre de documents à stocker dans Elasticsearch, je veux donc réduire la mémoire.
J’ai vu que je devais changer le paramètre -Xmx
dans la configuration Java, mais je ne sais pas comment.
J’ai vu que je peux exécuter ceci:
bin/ElasticSearch -Xmx=2G -Xms=2G
Mais quand je dois redémarrer Elasticsearch, cela sera perdu.
Est-il possible de modifier l’utilisation maximale de la mémoire lorsque Elasticsearch est installé en tant que service?
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 votre commentaire ci-dessous.
J’ai une page pastebin que je partage avec d’autres lorsque je m’interroge sur la mémoire et ES. Cela a fonctionné correctement pour moi: http://pastebin.com/mNUGQCLY . Je vais coller le contenu ici aussi:
Les références:
https://github.com/grigorescu/Brownian/wiki/ElasticSearch-Configuration http://www.elasticsearch.org/guide/reference/setup/installation/
Modifiez les fichiers suivants pour modifier la limite de mémoire et de fichier. Ces instructions supposent Ubuntu 10.04, peuvent fonctionner sur les versions ultérieures et autres dissortingbutions / systèmes d’exploitation. ( Edit : Cela fonctionne aussi pour Ubuntu 14.04.)
/etc/security/limits.conf :
elasticsearch - nofile 65535 elasticsearch - memlock unlimited
/ etc / default / elasticsearch (sous CentOS / RH: / etc / sysconfig / elasticsearch) :
ES_HEAP_SIZE=512m MAX_OPEN_FILES=65535 MAX_LOCKED_MEMORY=unlimited
/etc/elasticsearch/elasticsearch.yml :
bootstrap.mlockall: true
Dans ElasticSearch> = 5, la documentation a changé , ce qui signifie qu’aucune des réponses ci-dessus n’a fonctionné pour moi.
J’ai essayé de changer ES_HEAP_SIZE
dans /etc/default/elasticsearch
et dans etc/init.d/elasticsearch
, mais quand j’ai lancé ps aux | grep elasticsearch
ps aux | grep elasticsearch
la sortie a encore montré:
/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
Pour quiconque souhaite faire cela sur Centos 7 ou sur un autre système exécutant 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 d’environ 1g max – c’est la valeur par défaut)
Les réponses précédentes étaient insuffisantes dans mon cas, probablement parce que je suis sur Debian 8, alors qu’elles étaient référées à une dissortingbution antérieure.
Sur Debian 8, modifiez le script de service normalement placé dans /usr/lib/systemd/system/elasticsearch.service
, et ajoutez 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!
Instructions pour ubuntu 14.04
:
sudo vim /etc/init.d/elasticsearch
Ensemble
ES_HEAP_SIZE=512m
puis dans:
sudo vim /etc/elasticsearch/elasticsearch.yml
Ensemble:
bootstrap.memory_lock: true
Il y a des commentaires dans les fichiers pour plus d’informations
Si vous utilisez l’encapsuleur de service fourni dans le référentiel Github d’Elasticsearch, disponible à l’ adresse https://github.com/elasticsearch/elasticsearch-servicewrapper , le fichier conf d’elasticsearch-servicewrapper / service / elasticsearch.conf contrôle les parameters de la mémoire. En haut de elasticsearch.conf se trouve un paramètre:
set.default.ES_HEAP_SIZE=1024
Réduisez simplement ce paramètre, par exemple “set.default.ES_HEAP_SIZE = 512”, pour réduire la mémoire allouée d’Elasticsearch.
Notez que si vous utilisez le wrapper elasticsearch, le fichier ES_HEAP_SIZE fourni dans elasticsearch.conf OVERRIDES TOUS LES AUTRES PARAMÈTRES. Cela m’a pris un peu de temps pour comprendre, car à partir de la documentation, il semblait que la mémoire de tas pouvait être définie à partir d’elasticsearch.yml.
Si les parameters de votre wrapper de service sont définis ailleurs, par exemple dans / etc / default / elasticsearch, comme dans l’exemple de James, définissez-y ES_HEAP_SIZE.
Si vous avez installé ES à l’aide des packages RPM / DEB fournis (comme vous semblez l’avoir), vous pouvez ajuster cela en éditant le script init ( /etc/init.d/elasticsearch on RHEL/CentOS
). Si vous regardez dans le fichier, vous verrez un bloc avec les éléments suivants:
export ES_HEAP_SIZE export ES_HEAP_NEWSIZE export ES_DIRECT_SIZE export ES_JAVA_OPTS export JAVA_HOME
Pour ajuster la taille, changez simplement la ligne ES_HEAP_SIZE
comme suit:
export ES_HEAP_SIZE=xM/xG
(où x est le nombre de Mo / Go de RAM que vous souhaitez allouer)
Exemple:
export ES_HEAP_SIZE=1G
Serait allouer 1 Go.
Une fois le script modifié, enregistrez et quittez, puis redémarrez le service. Vous pouvez vérifier s’il a été correctement défini en exécutant les opérations suivantes:
ps aux | grep elasticsearch
Et rechercher les indicateurs -Xms et -Xmx dans le processus Java qui renvoie:
/usr/bin/java -Xms1G -Xmx1G
J’espère que cela t’aides 🙂
Si vous utilisez Windows Server, vous pouvez modifier la variable d’environnement, redémarrer le serveur pour appliquer la nouvelle valeur d’environnement et démarrer Elastic Service. Plus d’informations dans Installer Elastic dans Windows Server
Dans le répertoire principal de chemin d’access elasticsearch, à savoir généralement /usr/share/elasticsearch
, il existe un fichier de configuration bin/elasticsearch.in.sh
. Modifiez le paramètre ES_MIN_MEM
, ES_MAX_MEM
dans ce fichier pour modifier respectivement -Xms2g
, -Xmx4g
. Et s’il vous plaît assurez-vous que vous avez redémarré le nœud après cette modification de configuration.
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écommentez la dernière ligne comme
ES_HEAP_SIZE=2g