Автоматически устанавливать размер кучи Java для ElasticSearch в Linux

Я пытаюсь автоматически установить размер кучи на моих узлах ElasticSearch v5.6.3 (Ubuntu 16)

Машины размещены в Azure, и я хочу сделать это так, чтобы при масштабировании машины он автоматически устанавливал размер кучи на соответствующий уровень без необходимости вручную открывать файл /etc/elasticsearch/jvm.options и устанавливать его и затем перезапустите сервис.

Насколько я могу понять, предлагаются способы установки размера кучи (в ElasticSearch 5):

  1. В файле jvm.options
  2. через переменную окружения ES_JAVA_OPTS.

Следовательно, если я запускаю скрипт для установки ES_JAVA_OPTS при запуске до запуска службы asticsearch.

Я пробовал много вещей, чтобы попытаться установить ES_JAVA_OPTS, но, просматривая журналы, я вижу, что он использует значение по умолчанию.

Я пробовал разные вещи:

  • отредактируйте скрипт /etc/init.d/elasticsearch и переустановите сервис
  • отредактировав asticsearch-systemd-pre-exec для установки переменной.
  • Установка переменной в rc.local

В конце я поместил скрипт в init.d и использовал уровень запуска, чтобы выполнить его первым.

Сценарий обновляет файл jvm.options, используя sed следующим образом:

#!/bin/bash
memoryInKb="$(awk '/MemTotal/ {print $2}' /proc/meminfo)"
heapSize="$(expr $memoryInKb / 1024 / 1000 / 2)"
sed -i "s/#*-Xmx[0-9]\+g/-Xmx${heapSize}g/g" /etc/elasticsearch/jvm.options
sed -i "s/#*-Xms[0-9]\+g/-Xms${heapSize}g/g" /etc/elasticsearch/jvm.options

Но я думаю, что это действительно грязно. Должен быть лучший способ сделать это?

Я попытался настроить ES_JAVA_OPTS таким же образом, но это не сработало.

Моя конечная цель - облегчить расширение.

0 ответов

Другие вопросы по тегам