_JAVA_OPTIONS未设置-Xmx

问题描述 投票:0回答:1

我试图在我的Windows机器上运行Elasticsearch,但是收到错误,“无法创建Java虚拟机”。

Windows 10,32GB RAM,64位 JVM 1.8.0_201 Elasticsearch 6.6.1与msi安装程序一起安装,而不是作为服务安装。

Elasticsearch要求的堆大小超过3GB,所以我已经设置(并且还尝试注释掉)jvm.options:

-Xmx4096m
-Xms4096m

但后来我得到了可怕的JVM错误。我确定错误是由jvm堆大小太小引起的。所以我将环境变量_JAVA_OPTIONS设置为“-Xms512m -Xmx6144m”。

如果我跑:

java -XX:+PrintFlagsFinal -version | findstr /i "HeapSize PermSize ThreadStackSize"

我明白了:

Picked up _JAVA_OPTIONS: -Xms512m -Xmx6144m
 intx CompilerThreadStackSize                   = 0                                   {pd product}
 uintx ErgoHeapSizeLimit                        = 0                                   {product}
 uintx HeapSizePerGCThread                      = 87241520                            {product}
 uintx InitialHeapSize                          := 536870912                          {product}
 uintx LargePageHeapSizeThreshold               = 134217728                           {product}
 uintx MaxHeapSize                              := 2147483648                         {product}
 intx ThreadStackSize                           = 0                                   {pd product}
 intx VMThreadStackSize                         = 0                                   {pd product}
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

你可以看到它“拾取”_JAVA_OPTIONS,但MaxHeapSize仍然是2GB左右。我也试过运行弹性搜索作为管理员并强制jvm以管理员身份运行,但这没有帮助。这似乎是一个常见问题,但答案有限,没有一个对我有用。

编辑我在Ubuntu 18服务器上运行Elasticsearch,具有相同的java和ES版本。

ES设置为:

-Xms1g
-Xmx1g

和jvm有MaxHeapSize = 1056309248(1GB)。它工作正常。

我不明白为什么Windows安装要求3GB堆大小以及为什么jvm无法提供它。

elasticsearch jvm windows-10
1个回答
1
投票

documentation说env变量名应该是ES_JAVA_OPTS。你也可以把它放在一边,依靠默认的最大堆大小,在你的情况下应该是~8GB(可用内存的1/4)。

© www.soinside.com 2019 - 2024. All rights reserved.