Elasticsearch 7.3.0 翻译 - 《Set up Elasticsearch》 重要的Elasticsearch配置 设置堆大小

了解如何正确配置ElasticSearch的堆大小对于确保其在生产环境中的稳定运行至关重要。本文档指导你设置适当的堆大小,考虑服务器RAM和JVM限制,以避免内存溢出和优化垃圾回收。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

设置堆大小

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

ElasticSearch将通过xms(最小堆大小)和xmx(最大堆大小)设置分配jvm.options中指定的整个堆。您应该将这两个设置设置设置为相等。

这些设置的值取决于服务器上可用的RAM大小:

  • 将xmx和xms设置为不超过物理RAM的50%。ElasticSearch需要内存用于除JVM堆之外的其他用途,因此留出空间非常重要。例如,ElasticSearch使用堆外缓冲区进行有效的网络通信,依赖操作系统的文件系统缓存来有效地访问文件,而JVM本身也需要一些内存。观察ElasticSearch过程使用的内存比配置了xmx设置的限制多是正常的。

  • 将xmx和xms设置为不超过jvm用于压缩对象指针(compressed oops)的阈值;确切的阈值有所不同,但接近32 GB。您可以通过在日志中查找以下行来验证是否低于阈值:

heap size [1.9gb], compressed ordinary object pointers [true]
  • 理想情况下,将xmx和xms设置为不超过基于零的压缩OOP的阈值;精确的阈值有所不同,但在大多数系统中26 GB是安全的,但在某些系统中可能高达30 GB。通过使用jvm选项-xx:+unlockdiagnosticvmoptions-xx:+printcompressedoopsmode启动elasticsearch并查找以下行,可以验证您是否低于此阈值:

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

显示启用了基于零的压缩OOP。如果没有启用基于零的压缩OOP,那么您将看到如下行:

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

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

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

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

  2. 将最大堆大小设置为2g。

还可以通过环境变量设置堆大小。这可以通过注释jvm.options文件中的xms和xmx设置并通过es-java-opts设置这些值来完成:

ES_JAVA_OPTS="-Xms2g -Xmx2g" ./bin/elasticsearch  <1>
ES_JAVA_OPTS="-Xms4000m -Xmx4000m" ./bin/elasticsearch <2>
  1. 将最小和最大堆大小设置为2 GB。

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值