设置堆大小
默认情况下,Elasticsearch告诉JVM使用最小和最大大小为1 GB的堆。在进入生产阶段时,配置堆大小以确保Elasticsearch有足够的可用堆非常重要。
Elasticsearch将通过(最小堆大小)和(最大堆大小)设置分配jvm.options中指定的整个堆 。Xms
Xmx
这些设置的值取决于服务器上可用的RAM数量。好的经验法则是:
- 将最小堆大小(
Xms
)和最大堆大小(Xmx
)设置为彼此相等。 - Elasticsearch可用的堆越多,可用于缓存的内存就越多。但是请注意,过多的堆可能会使您长时间停滞垃圾回收。
- 设置
Xmx
为不超过物理RAM的50%,以确保有足够的物理RAM用于内核文件系统缓存。 - 请勿将其设置
Xmx
为高于JVM用于压缩对象指针(压缩oop)的临界值;确切的截止时间有所不同,但接近32 GB。您可以通过在日志中查找如下一行来验证您是否处于限制范围内:
- 更好的是,尝试保持在基于零的压缩oop的阈值以下;确切的截止时间有所不同,但是在大多数系统上26 GB是安全的,但是在某些系统上可以达到30 GB。您可以通过使用JVM选项启动Elasticsearch
-XX:+UnlockDiagnosticVMOptions -XX:+PrintCompressedOopsMode
并查找类似于以下内容的行来验证您是否处于限制之下:
显示启用了从零开始的压缩oop,而不是
以下是有关如何通过jvm.options文件设置堆大小的示例:
| 将最小堆大小设置为2g。 |
| 将最大堆大小设置为2g。 |
也可以通过环境变量设置堆大小。这可以通过注释掉文件中的Xms
和Xmx
设置, jvm.options然后通过ES_JAVA_OPTS
以下方式设置这些值来完成:
| 将最小和最大堆大小设置为2 GB。 |
| 将最小和最大堆大小设置为4000 MB。 |