3.3.6. 堆大小设置

未匹配的标注

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

Elasticsearch 将通过 [jvm.options] (3.2.1 JVM 参数设置 "设置 JVM 参数") 中指定整个堆。Xms(最小堆大小)和Xmx(最大堆大小)设置,你应该让这2个参数相等。

这些设置的值取决于服务器上的内存大小:

  •  Xmx 和 Xms 设置不应该超过宿主机内存的50%。Elasticsearch 需要用户JVM堆以外的其他用途的内存,为此留出多余部分是非常重要的。例如:Elasticsearch 使用堆外缓冲区进行高效的网络通信,依赖操作系统的文件系统缓存来有效的访问文件,而 JVM 本身也需要一些内存。通常观察到 Elasticsearch 进程使用内存多于 Xmx 设置限制。

  •  Xmx 和 Xms 设置不超过 JVM 用于压缩对象指针(压缩 oops ),确切的值会有有所不同,但是接近32G。你可以通过在日志中查找验证是否在阈值之下:

    [1.9gb], compressed ordinary object pointers [true]
  • 理想情况下将XmxXms设置成不大于零压缩 oop 阈值,确切的阈值是变化的,但 26 GB 在大多数系统上是安全的,甚至在某些系统上可以达到 30 GB。您可以通过使用 JVM 选项 -XX:+ UnlockDiagnosticVMOptions -XX:+ PrintCompressedOopsMode 启动 Elasticsearch 并查找类似以下的行来验证您是否处于此阈值以下:

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

    以上结果显示:启用了从零开始的压缩 oops 。如果没有启用从零开始的压缩oops,那么您将看到下面这样的一行代码:

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

Elasticsearch可用的堆越多,它可用于其内部缓存的内存就越多,但它留给操作系统用于文件系统缓存的内存就越少。此外,更大的堆可能导致更长的垃圾收集暂停。

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

1. -Xms2g  
2. -Xmx2g  
  1. 将最小堆大小设置为2g。
  2. 将最大堆大小设置为2g。

你也可以通过环境变量设置堆大小。这可以通过在 jvm.options 文件,并通过ES_JAVA_OPTS设置以下值:

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

1.将最小和最大堆大小设置为2 GB。
2.将最小和最大堆大小设置为4000 MB

Windows 服务配置堆与上述不同。最初为 Windows服务填写的值可以如上所述配置,但在安装服务后会有所不同。有关其他详细信息,请查阅 Windows服务文档

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
上一篇 下一篇
CrazyZard
贡献者:2
讨论数量: 0
发起讨论 只看当前版本


暂无话题~