你可能幾乎不需要修改JVM Options(JAVA虛擬機選項),如果真的需要修改,最有可能的修改就是設置heap的大小。本文就設置JVM Options進行了詳細的說明。
設置JVM options主要是通過對jvm.options的配置文件進行配置,該文件的位置默認放在config/jvm.options(從tar或者zip發行版安裝時),或者在/etc/elasticsearch/jvm.options(使用Debian 或RPM安裝時)。
此文件包含以下特殊語法的以行分隔的JVM參數列表:
- 忽略僅由空格組成的行
- 以井號(#)開頭的行被視為註釋,並被忽略
<code># this is a comment/<code>
- 以減號(-)開頭的行被視為JVM選項,該選項獨立於JVM版本而應用
<code>-Xmx2g/<code>
- 以數字開頭,後面緊跟冒號(:),再後跟減號(-)的行,被視為僅在JVM版本與該數字匹配時才適用的JVM選項。
<code>8:-Xmx2g/<code>
- 以數字開頭,再跟減號(-),再跟冒號(:)的行,被視為JVM選項,僅在JVM版本大於或等於該數字時才適用。
<code>8-:-Xmx2g/<code>
- 以數字開頭,再跟減號(-),後面再跟數字,再跟冒號(:)的行,被視為JVM選項,僅當JVM版本在兩個數字範圍內時才適用。
<code>8-9:-Xmx2g/<code>
- 其他形式的行均被認為不合法,被系統拒絕。
您可以將自定義JVM標誌添加到此文件,然後將此配置簽入版本控制系統。
設置Java虛擬機選項的另一種機制是通過ES_JAVA_OPTS環境變量。例如:
<code>export ES_JAVA_OPTS="$ES_JAVA_OPTS -Djava.io.tmpdir=/path/to/temp/dir"
./bin/elasticsearch/<code>
使用RPM或Debian軟件包時,可以在系統配置文件中指定ES_JAVA_OPTS。
<code>RPM /etc/sysconfig/elasticsearch
Debian /etc/default/elasticsearch/<code>
JVM具有一個用於觀察JAVA_TOOL_OPTIONS環境變量的內置機制。 我們故意在打包腳本中忽略此環境變量。 這樣做的主要原因是,在某些操作系統(例如Ubuntu)上,默認情況下通過此環境變量安裝了代理,我們不希望干擾Elasticsearch。
此外,其他一些Java程序也支持Java_OPTS環境變量。這不是JVM中內置的機制,而是生態系統中的約定。但是,我們不支持此環境變量,而是支持通過JVM.options文件或如上所述的環境變量ES_JAVA_OPTS設置JVM選項。
閱讀更多 瑜豆IT 的文章