_JAVA_OPTIONS未设置-Xmx

时间:2019-02-28 13:51:12

标签: elasticsearch jvm windows-10

我试图在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以管理员身份运行,但这并没有帮助。这似乎是一个普遍的问题,但是答案是有限的,没有一个对我有用。

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

ES设置为:

-Xms1g
-Xmx1g

并且jvm的MaxHeapSize = 1056309248(1GB)。而且工作正常。

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

1 个答案:

答案 0 :(得分:1)

documentation表示环境变量名称应为ES_JAVA_OPTS。 您也可以不使用它,而是依靠默认的最大堆大小(在您的情况下为〜8GB)(可用内存的1/4)。