Назад | Перейти на главную страницу

Автоматически устанавливать размер кучи 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 при запуске до запуска службы elasticsearch.

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

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

В конце концов, я поместил сценарий в 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 таким же образом, но это не сработало.

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