本地英文版地址: ../en/jvm-options.html
你应该很少需要更改 Java虚拟机(JVM)选项。
如果这样做,最有可能的修改是设置 堆大小。
本文档的剩余部分详细的解释了如何设置 JVM 选项。
你可以使用 jvm.options
文件 或 环境变量 ES_JAVA_OPTS
来设置选项。
设置或覆盖 JVM 选项的首选方法是通过 JVM 选项文件。
从 tar 或 zip 发行版安装时,jvm.options
的根配置文件是config/jvm.options
,自定义的 JVM 选项文件可以添加到 config/jvm.options.d/
。
当从 Debian 或 RPM 安装包安装时,jvm.options
的根配置文件是/etc/elasticsearch/jvm.options
,自定义的 JVM 选项文件可以添加到 /etc/elasticsearch/jvm.options.d/
。
当使用 Elasticsearch 的 Docker 发行版 时,你可以绑定挂载 自定义的 JVM 选项文件到 /usr/share/elasticsearch/config/jvm.options.d/
。
你应该永远也不需要修改 jvm.options
根文件,而应该使用自定义的 JVM 选项文件。
自定义 JVM 选项的处理顺序是按字母顺序排列。
JVM 选项文件必须有后缀.options,并包含一个按特殊语法以行分隔的 JVM 参数列表:
- 仅包含空白的行会被忽略
-
以
#
开头的行被视为注释并被忽略# this is a comment
-
以
-
开头的行被视为独立于 JVM 版本应用的 JVM 选项-Xmx2g
-
以数字开头、后跟一个
:
再后跟一个-
的行被视为一个 JVM 选项,仅当JVM的版本与数字匹配时才适用8:-Xmx2g
-
以数字开头、后跟一个
-
再后跟一个:
的行被视为一个 JVM 选项,仅当 JVM 版本大于或等于该数字时才适用8-:-Xmx2g
-
以数字开头、后跟一个
-
再后跟数字、后跟:
的行被视为一个 JVM 选项,仅当 JVM 的版本在这两个数字的范围内时才适用8-9:-Xmx2g
- 所有其他行都被拒绝
设置 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 选项,如上所述。