124 votes

Elastic search max virtual memory areas vm.max_map_count [65530] est trop faible, augmentez à au moins [262144]

J'ai un problème avec un systemd config pour ElasticSearch.

[Unit]
Description=platform-elasticsearch
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
User={{ app_user }}
Group={{ app_group }}
Environment=ES_PATH_CONF=/platform/opt/elasticsearch-{{ elasticsearch.version }}/config
Environment=JAVA_HOME=/platform/opt/jdk{{ jdk.major_version }}_{{ jdk.minor_version }}
LimitAS=infinity
LimitRSS=infinity
LimitCORE=infinity
LimitNOFILE=100000
LimitMEMLOCK=100000
StandardOutput=syslog
StandardError=syslog
WorkingDirectory=/platform/var/app/elasticsearch
ExecStart=/platform/opt/elasticsearch-{{ elasticsearch.version }}/bin/elasticsearch
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s -TERM $MAINPID
TimeoutStopSec=60
# When a JVM receives a SIGTERM signal it exits with code 143
SuccessExitStatus=143 0
Type=simple
Restart=on-failure
RestartSec=10
PIDFile=/platform/var/run/elasticsearch.pid

[Install]
WantedBy=multi-user.target

Cela ne semble pas permettez-moi de configurer la machine virtuelle.max_map_count réglage.

Jul 20 14:53:46 scratchpad elasticsearch: [2018-07-20T14:53:46,359][INFO ][o.e.b.BootstrapChecks    ] [1oQJNUK] bound or publishing to a non-loopback     address, enforcing bootstrap checks
Jul 20 14:53:46 scratchpad elasticsearch: ERROR: [1] bootstrap checks failed
Jul 20 14:53:46 scratchpad elasticsearch: [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
Jul 20 14:53:46 scratchpad elasticsearch: [2018-07-20T14:53:46,376][INFO ][o.e.n.Node               ] [1oQJNUK] stopping ...
Jul 20 14:53:46 scratchpad elasticsearch: [2018-07-20T14:53:46,414][INFO ][o.e.n.Node               ] [1oQJNUK] stopped
Jul 20 14:53:46 scratchpad elasticsearch: [2018-07-20T14:53:46,414][INFO ][o.e.n.Node               ] [1oQJNUK] closing ...
Jul 20 14:53:46 scratchpad elasticsearch: [2018-07-20T14:53:46,445][INFO ][o.e.n.Node               ] [1oQJNUK] closed
Jul 20 14:53:46 scratchpad systemd: platform-elasticsearch.service: main process exited, code=exited, status=78/n/a

La question est la suivante:

Jul 20 14:53:46 scratchpad elasticsearch: [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

J'ai été en mesure de commencer élastique de recherche sur l'invite de commande avec les éléments suivants:

sudo su -c 'echo 262144 > "/proc/sys/vm/max_map_count"' && \ 
export JAVA_HOME=/platform/opt/jdk1.8.0_181 && \
export ES_PATH_CONF=/platform/opt/elasticsearch-6.3.1/config && \
/platform/opt/elasticsearch-6.3.1/bin/elasticsearch 

quelqu'un peut me dire pourquoi LimitMEMLOCK=100000 ne fonctionne pas, et comment je peux mettre max_map_count de l'intérieur de systemd.

J'ai également essayé de définir les options suivantes:

cat /etc/security/limits.d/30_elastic_limits.conf

vagrant       hard    nofile     500000
vagrant       hard    memlock     262144

mais ce qui semble être totalement ignoré par systemd.

173voto

Val Points 94829

La réponse de Vivek

 sysctl -w vm.max_map_count=262144
 

est correct, cependant, le paramètre ne durera que pour la durée de la session. Si l'hôte redémarre, le paramètre sera réinitialisé à sa valeur d'origine.

Si vous souhaitez définir cela de façon permanente, vous devez modifier /etc/sysctl.conf et définir vm.max_map_count sur 262144.

Lorsque l'hôte redémarre, vous pouvez vérifier que le paramètre est toujours correct en exécutant sysctl vm.max_map_count

53voto

burtsevyg Points 181

Insérez la nouvelle entrée dans le fichier /etc/sysctl.conf avec le paramètre requis:

 vm.max_map_count = 262144
 

cela rend les changements permanents.

Exécutez également:

 sysctl -w vm.max_map_count=262144
 

changer l'état actuel du noyau.

45voto

Vivek Pakmode Points 627

Voir la documentation Elasticsearch sur la mémoire virtuelle . Sur Centos, vous pouvez faire avec la commande suivante:

 sysctl -w vm.max_map_count=262144
 

20voto

Ce n'est pas une réponse en soi, mais une clarification/raccourci pour toute personne ayant l'op du problème à partir d'un conteneur docker point de vue. J'ai eu ce problème à partir d'une application s'exécute dans un conteneur docker. Et, comme l'explique ici par nishant

Vous n'avez pas besoin d'augmenter la mémoire virtuelle pour Elasticsearch au niveau du conteneur, vous pouvez le faire à la machine hôte en exécutant cette commande:

sudo sysctl -w vm.max_map_count=262144

et puis redémarrez votre menu fixe-conteneurs.

Comme l'a expliqué le val-dessus la définition de cette max_map_count cette façon de ne pas persister lors du redémarrage de la machine sur laquelle s'exécute le conteneur docker. et donc, vous aurez besoin de l'enregistrer dans un plus persistante manière, comme expliqué par lui ci-dessus.

7voto

Keshav Lodhi Points 21

Veuillez exécuter la commande suivante: sysctl -w vm.max_map_count=262144 pour augmenter la mémoire virtuelle par défaut utilisé par le Elasticsearch.

Remarque: Lorsque vous exécutez le mentionné ci-dessus la commande de votre problème sera résolu, mais, ce sera une solution temporaire en tant que nœud/système/conteneur obtient redémarrer vos changements. Donc, si vous voulez régler ce de façon permanente, vous devez éditer /etc/sysctl.conf et définissez vm.max_map_count de 262144.

Pour plus de détails, cliquez ici.

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