我正试图在ElasticSearch v5.6.3节点(Ubuntu 16)上自动设置堆大小,
这些计算机托pipe在Azure上,我希望这样做,以便在扩展计算机时自动将堆大小设置为适当的级别,而无需手动打开/etc/elasticsearch/jvm.options文件并将其设置为然后重新启动服务。
据我所知,build议的方法来设置堆大小(在ElasticSearch 5中)是:
因此,如果在弹性search服务启动之前运行脚本来设置ES_JAVA_OPTS,
我尝试了很多东西来试图设置ES_JAVA_OPTS,但是在查看日志时,我可以看到它使用了默认值。
我尝试了各种各样的东西:
最后,我在init.d中放了一个脚本,并使用运行级别首先执行它。
该脚本使用sed更新jvm.options文件,如下所示:
#!/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,但它不起作用。
我的最终目标是使扩展更容易。