设置JVM选项
您很少需要更改Java虚拟机(JVM)选项。如果这样做,最可能的更改是设置堆大小。本文的其余部分详细解释了如何设置JVM选项。
设置jvm选项(包括系统属性和jvm标志)的首选方法是通过jvm.options配置文件。此文件的默认位置是config/jvm.options(从tar或zip分发版安装时)和/etc/elasticsearch/jvm.options(从debian或rpm包安装时)。
此文件包含以下特殊语法的以行分隔的JVM参数列表:
-
只忽略由空白组成的行
-
以开头的行被视为注释并被忽略。
# this is a comment
-
以-开头的行被视为独立于JVM版本应用的JVM选项。
-Xmx2g
-
以数字开头、后跟a:后跟a-的行被视为一个JVM选项,该选项仅在JVM版本与数字匹配时适用。
8:-Xmx2g
-
以数字开头、后跟-后跟A:的行被视为一个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。
JVM有一个内置的机制来观察java_tool_options环境变量。我们故意忽略打包脚本中的这个环境变量。其主要原因是,在某些操作系统(如Ubuntu)上,默认情况下通过此环境变量安装的代理不希望干扰ElasticSearch。
此外,一些其他Java程序支持JAVA_OPTS
环境变量。这不是JVM中内置的机制,而是生态系统中的约定。但是,我们不支持这个环境变量,而是支持通过jvm.options文件或环境变量ES_JAVA_OPTS
设置jvm选项,如上所述。