ElasticSearch JVM配置

1、JAVA(JVM)版本

Elasticsearch是基于Java構(gòu)建的,需要至少Java8來運(yùn)行它。只支持Oracle的Java和OpenJDK。所有Elasticsearch節(jié)點(diǎn)和客戶機(jī)都應(yīng)該使用相同的JVM版本。

我們推薦您安裝Java1.8.0_131版本或者Java 8發(fā)行版系列的后續(xù)版本。我們推薦您使用LTS JAVA版本。如果使用了已知的糟糕的Java版本,Elasticsearch將拒絕啟動(dòng)。

Elasticsearch將使用的Java版本可以通過設(shè)置JAVA_HOME環(huán)境變量進(jìn)行配置。

2、設(shè)置堆大小

默認(rèn)情況下,Elasticsearch告訴JVM使用最小和最大大小為1 GB的堆。在轉(zhuǎn)移到生產(chǎn)環(huán)境時(shí),重要的是配置堆大小,以確保Elasticsearch有足夠的可用堆。

Elasticsearch將通過Xms(最小堆大小)和Xmx(最大堆大小)設(shè)置分配在jvm.options文件中指定的整個(gè)堆。

這些設(shè)置的值取決于服務(wù)器上可用RAM的數(shù)量。好的經(jīng)驗(yàn)法則是:

  • 設(shè)置最小堆大小(Xms)和最大堆大小(Xmx)彼此相等。
  • 用于Elasticsearch的堆越多,用于緩存的內(nèi)存就越多。但是請(qǐng)注意,過多的堆會(huì)導(dǎo)致長(zhǎng)時(shí)間的垃圾收集暫停。
  • 將Xmx設(shè)置為不超過物理RAM的50%,以確保為內(nèi)核文件系統(tǒng)緩存留有足夠的物理RAM。
  • 不要將Xmx設(shè)置在JVM用于壓縮對(duì)象指針的截止值之上(壓縮的oops);具體的截止值各不相同,但接近32GB。您可以通過在日志中查找如下所示的行來驗(yàn)證是否超出了限制:

heap size [1.9gb], compressed ordinary object pointers [true]

  • 更好的是,盡量保持在基于零壓縮的閾值以下;具體的截止值各不相同,但是在大多數(shù)系統(tǒng)上26GB是安全的,但在某些系統(tǒng)上可能高達(dá)30GB。您可以通過使用JVM選項(xiàng)啟動(dòng)Elasticsearch來驗(yàn)證您是否受到了限制 -XX:+UnlockDiagnosticVMOptions -XX:+PrintCompressedOopsMode,尋找這樣的一行:

heap address: 0x000000011be00000, size: 27648 MB, zero based Compressed Oops

顯示啟用了從零開始的壓縮oops而不是:

eap address: 0x0000000118400000, size: 28672 MB, Compressed Oops with base: 0x00000001183ff000

下面是如何通過jvm.options文件設(shè)置堆大小的例子:

-Xms2g
-Xmx2g

  • 將最小堆大小設(shè)置為2g
  • 將最大堆大小設(shè)置為2g

還可以通過環(huán)境變量設(shè)置堆大小。這可以通過注釋掉jvm.options文件中的Xms和Xmx設(shè)置來實(shí)現(xiàn)并通過ES_JAVA_OPTS設(shè)置這些值:

ES_JAVA_OPTS="-Xms2g -Xmx2g" ./bin/elasticsearch
ES_JAVA_OPTS="-Xms4000m -Xmx4000m" ./bin/elasticsearch

  • 設(shè)置最小和最大堆大小為2gb
  • 設(shè)置最小和最大堆大小為4000 MB

注意:為Windows服務(wù)配置堆與上述配置不同。Windows服務(wù)最初填充的值可以如上配置,但在安裝服務(wù)之后會(huì)有所不同。有關(guān)更多細(xì)節(jié),請(qǐng)參閱Windows服務(wù)文檔。

3、JVM堆轉(zhuǎn)儲(chǔ)路徑

默認(rèn)情況下,Elasticsearch配置JVM將堆從內(nèi)存溢出異常轉(zhuǎn)儲(chǔ)到默認(rèn)數(shù)據(jù)目錄(/var/lib/elasticsearch是針對(duì)RPM和Debian包發(fā)行版的,Elasticsearch安裝根目錄下的data目錄是針對(duì)tar和zip存檔發(fā)行版的)如果此路徑不適合接收堆轉(zhuǎn)儲(chǔ),則應(yīng)修改條目-XX:HeapDumpPath=…在jvm.options文件中。如果指定目錄,JVM將根據(jù)運(yùn)行實(shí)例的PID為堆轉(zhuǎn)儲(chǔ)生成一個(gè)文件名。如果指定的是固定文件名而不是目錄,那么當(dāng)JVM需要對(duì)內(nèi)存溢出異常執(zhí)行堆轉(zhuǎn)儲(chǔ)時(shí),文件必須不存在,否則堆轉(zhuǎn)儲(chǔ)將失敗。

4、GC日志記錄

默認(rèn)情況下,Elasticsearch啟用GC日志。這些都是在jvm.options中配置的和默認(rèn)設(shè)置到與Elasticsearch日志相同的默認(rèn)位置。默認(rèn)配置每64 MB旋轉(zhuǎn)日志一次,最多可以消耗2 GB的磁盤空間。

5、JVM致命錯(cuò)誤日志

默認(rèn)情況下,Elasticsearch配置JVM將致命錯(cuò)誤日志寫入默認(rèn)日志目錄(/var/log/elasticsearch是RPM和Debian包發(fā)行版的,Elasticsearch安裝根目錄下的logs目錄是針對(duì)tar和zip存檔發(fā)行版的)。這些日志是JVM遇到致命錯(cuò)誤(例如,分割錯(cuò)誤)時(shí)生成的。如果這個(gè)路徑不適合接收日志,您應(yīng)該在jvm.options文件中修改條目-XX:ErrorFile=…為一個(gè)替代路徑。

鏈接:http://www.itdecent.cn/p/9a3a90b7a409
來源:簡(jiǎn)書

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容