你可能几乎不需要修改JVM Options(JAVA虚拟机选项),如果真的需要修改,最有可能的修改就是设置heap的大小。本文就设置JVM Options进行了详细的说明。
设置JVM options主要是通过对jvm.options的配置文件进行配置,该文件的位置默认放在config/jvm.options(从tar或者zip发行版安装时),或者在/etc/elasticsearch/jvm.options(使用Debian 或RPM安装时)。
此文件包含以下特殊语法的以行分隔的JVM参数列表:
- 忽略仅由空格组成的行
- 以井号(#)开头的行被视为注释,并被忽略
# this is a comment
- 以减号(-)开头的行被视为JVM选项,该选项独立于JVM版本而应用
-Xmx2g
- 以数字开头,后面紧跟冒号(:),再后跟减号(-)的行,被视为仅在JVM版本与该数字匹配时才适用的JVM选项。
8:-Xmx2g
- 以数字开头,再跟减号(-),再跟冒号(:)的行,被视为JVM选项,仅在JVM版本大于或等于该数字时才适用。
8-:-Xmx2g
- 以数字开头,再跟减号(-),后面再跟数字,再跟冒号(:)的行,被视为JVM选项,仅当JVM版本在两个数字范围内时才适用。
8-9:-Xmx2g
- 其他形式的行均被认为不合法,被系统拒绝。
您可以将自定义JVM标志添加到此文件,然后将此配置签入版本控制系统。
设置Java虚拟机选项的另一种机制是通过ES_JAVA_OPTS环境变量。例如:
export ES_JAVA_OPTS="$ES_JAVA_OPTS -Djava.io.tmpdir=/path/to/temp/dir"./bin/elasticsearch
使用RPM或Debian软件包时,可以在系统配置文件中指定ES_JAVA_OPTS。
RPM /etc/sysconfig/elasticsearchDebian /etc/default/elasticsearch
JVM具有一个用于观察JAVA_TOOL_OPTIONS环境变量的内置机制。 我们故意在打包脚本中忽略此环境变量。 这样做的主要原因是,在某些操作系统(例如Ubuntu)上,默认情况下通过此环境变量安装了代理,我们不希望干扰Elasticsearch。
此外,其他一些Java程序也支持Java_OPTS环境变量。这不是JVM中内置的机制,而是生态系统中的约定。但是,我们不支持此环境变量,而是支持通过JVM.options文件或如上所述的环境变量ES_JAVA_OPTS设置JVM选项。