ElasticSearch JVM配置

2019-08-23  本文已影响0人  我是一名搬运工

1、JAVA(JVM)版本

Elasticsearch是基于Java构建的,需要至少Java8来运行它。只支持Oracle的Java和OpenJDK。所有Elasticsearch节点和客户机都应该使用相同的JVM版本。

我们推荐您安装Java1.8.0_131版本或者Java 8发行版系列的后续版本。我们推荐您使用LTS JAVA版本。如果使用了已知的糟糕的Java版本,Elasticsearch将拒绝启动。

Elasticsearch将使用的Java版本可以通过设置JAVA_HOME环境变量进行配置。

2、设置堆大小

默认情况下,Elasticsearch告诉JVM使用最小和最大大小为1 GB的堆。在转移到生产环境时,重要的是配置堆大小,以确保Elasticsearch有足够的可用堆。

Elasticsearch将通过Xms(最小堆大小)和Xmx(最大堆大小)设置分配在jvm.options文件中指定的整个堆。

这些设置的值取决于服务器上可用RAM的数量。好的经验法则是:

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

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

显示启用了从零开始的压缩oops而不是:

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

下面是如何通过jvm.options文件设置堆大小的例子:

-Xms2g
-Xmx2g

还可以通过环境变量设置堆大小。这可以通过注释掉jvm.options文件中的Xms和Xmx设置来实现并通过ES_JAVA_OPTS设置这些值:

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

注意:为Windows服务配置堆与上述配置不同。Windows服务最初填充的值可以如上配置,但在安装服务之后会有所不同。有关更多细节,请参阅Windows服务文档

3、JVM堆转储路径

默认情况下,Elasticsearch配置JVM将堆从内存溢出异常转储到默认数据目录(/var/lib/elasticsearch是针对RPM和Debian包发行版的,Elasticsearch安装根目录下的data目录是针对tar和zip存档发行版的)如果此路径不适合接收堆转储,则应修改条目-XX:HeapDumpPath=…在jvm.options文件中。如果指定目录,JVM将根据运行实例的PID为堆转储生成一个文件名。如果指定的是固定文件名而不是目录,那么当JVM需要对内存溢出异常执行堆转储时,文件必须不存在,否则堆转储将失败。

4、GC日志记录

默认情况下,Elasticsearch启用GC日志。这些都是在jvm.options中配置的和默认设置到与Elasticsearch日志相同的默认位置。默认配置每64 MB旋转日志一次,最多可以消耗2 GB的磁盘空间。

5、JVM致命错误日志

默认情况下,Elasticsearch配置JVM将致命错误日志写入默认日志目录(/var/log/elasticsearch是RPM和Debian包发行版的,Elasticsearch安装根目录下的logs目录是针对tar和zip存档发行版的)。这些日志是JVM遇到致命错误(例如,分割错误)时生成的。如果这个路径不适合接收日志,您应该在jvm.options文件中修改条目-XX:ErrorFile=…为一个替代路径。

链接:https://www.jianshu.com/p/9a3a90b7a409
来源:简书

上一篇 下一篇

猜你喜欢

热点阅读