es设置JVM堆大小

设置堆大小

默认情况下,Elasticsearch告诉JVM使用最小和最大大小为1 GB的堆。在进入生产阶段时,配置堆大小以确保Elasticsearch有足够的可用堆非常重要。

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

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

  • 将最小堆大小(Xms)和最大堆大小(Xmx)设置为彼此相等。
  • Elasticsearch可用的堆越多,可用于缓存的内存就越多。但是请注意,过多的堆可能会使您长时间停滞垃圾回收。
  • 设置Xmx为不超过物理RAM的50%,以确保有足够的物理RAM用于内核文件系统缓存
  • 请勿将其设置Xmx为高于JVM用于压缩对象指针(压缩oop)的临界值;确切的截止时间有所不同,但接近32 GB。您可以通过在日志中查找如下一行来验证您是否处于限制范围内:

    堆大小[1.9gb],压缩的普通对象指针[true]
  • 更好的是,尝试保持在基于零的压缩oop的阈值以下;确切的截止时间有所不同,但是在大多数系统上26 GB是安全的,但是在某些系统上可以达到30 GB。您可以通过使用JVM选项启动Elasticsearch -XX:+UnlockDiagnosticVMOptions -XX:+PrintCompressedOopsMode并查找类似于以下内容的行来验证您是否处于限制之下:

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

    显示启用了从零开始的压缩oop,而不是

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

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

-Xms2g 
-Xmx2g 

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

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

也可以通过环境变量设置堆大小。这可以通过注释掉文件中的XmsXmx设置, jvm.options然后通过ES_JAVA_OPTS以下方式设置这些值来完成:

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

将最小和最大堆大小设置为2 GB。

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

发布了131 篇原创文章 · 获赞 7 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_43064185/article/details/103559412