Я пытаюсь автоматически установить размер кучи на моих узлах ElasticSearch v5.6.3 (Ubuntu 16)
Машины размещены в Azure, и я хочу сделать это так, чтобы при масштабировании машины он автоматически устанавливал размер кучи на соответствующий уровень без необходимости вручную открывать файл /etc/elasticsearch/jvm.options и устанавливать его и затем перезапустите службу.
Насколько я могу разобраться, предлагаемые способы установки размера кучи (в ElasticSearch 5):
Из этого следует, что если я запускаю скрипт для установки 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 таким же образом, но это не сработало.
Моя конечная цель - облегчить масштабирование.