Setting JVM options

    您应该很少需要更改Java虚拟机(JVM)选项。如果这样做,最可能的更改是设置堆大小。本文档的其余部分详细说明了如何设置JVM选项。

    设置JVM选项(包括系统属性和JVM标志)的首选方法是通过jvm.options配置文件。此文件的默认位置是config / jvm.options(从tar或zip发行版安装时)和/etc/elasticsearch/jvm.options(从Debian或RPM软件包安装时)。

    此文件包含遵循特殊语法的以行分隔的JVM参数列表:

    • 仅包含空格的行被忽略
    • 以#开头的行被视为注释并被忽略
    • 以 - 开头的行被视为JVM选项,该选项独立于JVM的版本而应用
      1. -Xmx2g
    • 以数字开头后跟:后跟 - 的行被视为JVM选项,仅当JVM的版本与数字匹配时才适用
      1. 8:-Xmx2g
    • 以数字开头后跟 - 后跟 :的行被视为JVM选项,仅当JVM的版本大于或等于数字时才适用
      1. 8-:-Xmx2g
    • 以数字开头后跟 - 后跟数字后跟:的行被视为JVM选项,仅当JVM的版本属于这两个数字的范围时才适用
      1. 8-9:-Xmx2g
    • 所有其他行都被屏弃了

    您可以将自定义JVM标志添加到此文件,并将此配置检查到版本控制系统中。

    设置Java虚拟机选项的另一种机制是通过ES_JAVA_OPTS环境变量。例如:

    1. export ES_JAVA_OPTS="$ES_JAVA_OPTS -Djava.io.tmpdir=/path/to/temp/dir"
    2. ./bin/elasticsearch

    使用RPM或Debian软件包时,可以在系统配置文件中指定ES_JAVA_OPTS。

    JVM具有用于观察JAVA_TOOL_OPTIONS环境变量的内置机制。我们故意在包装脚本中忽略此环境变量。主要原因是在某些操作系统(例如,Ubuntu)上,默认情况下通过此环境变量安装了代理,我们不希望干扰Elasticsearch。

    此外,一些其他Java程序支持JAVA_OPTS环境变量。这不是JVM中内置的机制,而是生态系统中的约定。但是,我们不支持此环境变量,而是支持通过jvm.options文件或环境变量ES_JAVA_OPTS设置JVM选项,如上所述。