elasticsearch 出现“java.lang.OutOfMemoryError: Java heap space”
默认情况下,Elasticsearch JVM默认使用最小和最大大小为2 GB的堆。迁移到生产环境时,配置堆大小以确保Elasticsearch堆足够的大很重要的。
Elasticsearch将通过Xms(最小堆大小)和Xmx(最大堆大小)设置分配jvm.options中指定的整个堆。
设置的值取决于服务器上可用的RAM(随机存取存储器,其实就是内存)量。建议的配置如下:
- 将最小堆大小(Xms)和最大堆大小(Xmx)设置为彼此相等。
- Elasticsearch可用的堆越多,它可用于缓存的内存就越多。但请注意,过多的堆可能会陷入长时间的垃圾收集暂停。所以设置的堆不能太大, 尽量设置到内存的50%。
- 将Xmx设置为不超过物理RAM的50%,以确保有足够的物理内存给内核文件系统缓存。
- 内存heap size配置不要超过32G, 基本上大多数系统最多只配置到26G.
设置方法:
jvm.options目录在于安装目录 config/jvm.options
以下是如何通过jvm.options文件设置堆大小的示例